@@ -53,7 +53,8 @@ public virtual JniObjectReference CreateLocalReference (JniObjectReference refer
5353 {
5454 if ( ! reference . IsValid )
5555 return reference ;
56- AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
56+ if ( localReferenceCount < 0 )
57+ AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
5758 localReferenceCount ++ ;
5859 return JniEnvironment . References . NewLocalRef ( reference ) ;
5960 }
@@ -71,7 +72,8 @@ public virtual void DeleteLocalReference (ref JniObjectReference reference, ref
7172 return ;
7273 AssertReferenceType ( ref reference , JniObjectReferenceType . Local ) ;
7374 localReferenceCount -- ;
74- AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
75+ if ( localReferenceCount < 0 )
76+ AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
7577 JniEnvironment . References . DeleteLocalRef ( reference . Handle ) ;
7678 reference . Invalidate ( ) ;
7779 }
@@ -87,7 +89,8 @@ public virtual void CreatedLocalReference (JniObjectReference reference, ref int
8789 {
8890 if ( ! reference . IsValid )
8991 return ;
90- AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
92+ if ( localReferenceCount < 0 )
93+ AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
9194 localReferenceCount ++ ;
9295 }
9396
@@ -104,7 +107,8 @@ public virtual IntPtr ReleaseLocalReference (ref JniObjectReference reference, r
104107 if ( ! reference . IsValid )
105108 return IntPtr . Zero ;
106109 localReferenceCount -- ;
107- AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
110+ if ( localReferenceCount < 0 )
111+ AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
108112 var h = reference . Handle ;
109113 reference . Invalidate ( ) ;
110114 return h ;
@@ -123,7 +127,8 @@ public virtual JniObjectReference CreateGlobalReference (JniObjectReference refe
123127 if ( ! reference . IsValid )
124128 return reference ;
125129 var n = JniEnvironment . References . NewGlobalRef ( reference ) ;
126- AssertCount ( GlobalReferenceCount , "GREF" , reference . ToString ( ) ) ;
130+ if ( GlobalReferenceCount < 0 )
131+ AssertCount ( GlobalReferenceCount , "GREF" , reference . ToString ( ) ) ;
127132 return n ;
128133 }
129134
@@ -132,7 +137,8 @@ public virtual void DeleteGlobalReference (ref JniObjectReference reference)
132137 if ( ! reference . IsValid )
133138 return ;
134139 AssertReferenceType ( ref reference , JniObjectReferenceType . Global ) ;
135- AssertCount ( GlobalReferenceCount , "GREF" , reference . ToString ( ) ) ;
140+ if ( GlobalReferenceCount < 0 )
141+ AssertCount ( GlobalReferenceCount , "GREF" , reference . ToString ( ) ) ;
136142 JniEnvironment . References . DeleteGlobalRef ( reference . Handle ) ;
137143 reference . Invalidate ( ) ;
138144 }
@@ -142,7 +148,8 @@ public virtual JniObjectReference CreateWeakGlobalReference (JniObjectReference
142148 if ( ! reference . IsValid )
143149 return reference ;
144150 var n = JniEnvironment . References . NewWeakGlobalRef ( reference ) ;
145- AssertCount ( WeakGlobalReferenceCount , "WGREF" , reference . ToString ( ) ) ;
151+ if ( WeakGlobalReferenceCount < 0 )
152+ AssertCount ( WeakGlobalReferenceCount , "WGREF" , reference . ToString ( ) ) ;
146153 return n ;
147154 }
148155
@@ -151,7 +158,8 @@ public virtual void DeleteWeakGlobalReference (ref JniObjectReference reference)
151158 if ( ! reference . IsValid )
152159 return ;
153160 AssertReferenceType ( ref reference , JniObjectReferenceType . WeakGlobal ) ;
154- AssertCount ( WeakGlobalReferenceCount , "WGREF" , reference . ToString ( ) ) ;
161+ if ( WeakGlobalReferenceCount < 0 )
162+ AssertCount ( WeakGlobalReferenceCount , "WGREF" , reference . ToString ( ) ) ;
155163 JniEnvironment . References . DeleteWeakGlobalRef ( reference . Handle ) ;
156164 reference . Invalidate ( ) ;
157165 }
@@ -179,9 +187,6 @@ static void AssertReferenceType (ref JniObjectReference reference, JniObjectRefe
179187 [ Conditional ( "DEBUG" ) ]
180188 void AssertCount ( int count , string type , string value )
181189 {
182- if ( count >= 0 )
183- return ;
184-
185190 Debug . Assert ( count >= 0 ,
186191 string . Format ( "{0} count is {1}, expected to be >= 0 when dealing with handle {2} on thread '{3}'({4})." ,
187192 type , count , value , Runtime . GetCurrentManagedThreadName ( ) , Environment . CurrentManagedThreadId ) ) ;
0 commit comments