@@ -53,7 +53,8 @@ public virtual JniObjectReference CreateLocalReference (JniObjectReference refer
53
53
{
54
54
if ( ! reference . IsValid )
55
55
return reference ;
56
- AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
56
+ if ( localReferenceCount < 0 )
57
+ AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
57
58
localReferenceCount ++ ;
58
59
return JniEnvironment . References . NewLocalRef ( reference ) ;
59
60
}
@@ -71,7 +72,8 @@ public virtual void DeleteLocalReference (ref JniObjectReference reference, ref
71
72
return ;
72
73
AssertReferenceType ( ref reference , JniObjectReferenceType . Local ) ;
73
74
localReferenceCount -- ;
74
- AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
75
+ if ( localReferenceCount < 0 )
76
+ AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
75
77
JniEnvironment . References . DeleteLocalRef ( reference . Handle ) ;
76
78
reference . Invalidate ( ) ;
77
79
}
@@ -87,7 +89,8 @@ public virtual void CreatedLocalReference (JniObjectReference reference, ref int
87
89
{
88
90
if ( ! reference . IsValid )
89
91
return ;
90
- AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
92
+ if ( localReferenceCount < 0 )
93
+ AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
91
94
localReferenceCount ++ ;
92
95
}
93
96
@@ -104,7 +107,8 @@ public virtual IntPtr ReleaseLocalReference (ref JniObjectReference reference, r
104
107
if ( ! reference . IsValid )
105
108
return IntPtr . Zero ;
106
109
localReferenceCount -- ;
107
- AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
110
+ if ( localReferenceCount < 0 )
111
+ AssertCount ( localReferenceCount , "LREF" , reference . ToString ( ) ) ;
108
112
var h = reference . Handle ;
109
113
reference . Invalidate ( ) ;
110
114
return h ;
@@ -123,7 +127,8 @@ public virtual JniObjectReference CreateGlobalReference (JniObjectReference refe
123
127
if ( ! reference . IsValid )
124
128
return reference ;
125
129
var n = JniEnvironment . References . NewGlobalRef ( reference ) ;
126
- AssertCount ( GlobalReferenceCount , "GREF" , reference . ToString ( ) ) ;
130
+ if ( GlobalReferenceCount < 0 )
131
+ AssertCount ( GlobalReferenceCount , "GREF" , reference . ToString ( ) ) ;
127
132
return n ;
128
133
}
129
134
@@ -132,7 +137,8 @@ public virtual void DeleteGlobalReference (ref JniObjectReference reference)
132
137
if ( ! reference . IsValid )
133
138
return ;
134
139
AssertReferenceType ( ref reference , JniObjectReferenceType . Global ) ;
135
- AssertCount ( GlobalReferenceCount , "GREF" , reference . ToString ( ) ) ;
140
+ if ( GlobalReferenceCount < 0 )
141
+ AssertCount ( GlobalReferenceCount , "GREF" , reference . ToString ( ) ) ;
136
142
JniEnvironment . References . DeleteGlobalRef ( reference . Handle ) ;
137
143
reference . Invalidate ( ) ;
138
144
}
@@ -142,7 +148,8 @@ public virtual JniObjectReference CreateWeakGlobalReference (JniObjectReference
142
148
if ( ! reference . IsValid )
143
149
return reference ;
144
150
var n = JniEnvironment . References . NewWeakGlobalRef ( reference ) ;
145
- AssertCount ( WeakGlobalReferenceCount , "WGREF" , reference . ToString ( ) ) ;
151
+ if ( WeakGlobalReferenceCount < 0 )
152
+ AssertCount ( WeakGlobalReferenceCount , "WGREF" , reference . ToString ( ) ) ;
146
153
return n ;
147
154
}
148
155
@@ -151,7 +158,8 @@ public virtual void DeleteWeakGlobalReference (ref JniObjectReference reference)
151
158
if ( ! reference . IsValid )
152
159
return ;
153
160
AssertReferenceType ( ref reference , JniObjectReferenceType . WeakGlobal ) ;
154
- AssertCount ( WeakGlobalReferenceCount , "WGREF" , reference . ToString ( ) ) ;
161
+ if ( WeakGlobalReferenceCount < 0 )
162
+ AssertCount ( WeakGlobalReferenceCount , "WGREF" , reference . ToString ( ) ) ;
155
163
JniEnvironment . References . DeleteWeakGlobalRef ( reference . Handle ) ;
156
164
reference . Invalidate ( ) ;
157
165
}
@@ -179,9 +187,6 @@ static void AssertReferenceType (ref JniObjectReference reference, JniObjectRefe
179
187
[ Conditional ( "DEBUG" ) ]
180
188
void AssertCount ( int count , string type , string value )
181
189
{
182
- if ( count >= 0 )
183
- return ;
184
-
185
190
Debug . Assert ( count >= 0 ,
186
191
string . Format ( "{0} count is {1}, expected to be >= 0 when dealing with handle {2} on thread '{3}'({4})." ,
187
192
type , count , value , Runtime . GetCurrentManagedThreadName ( ) , Environment . CurrentManagedThreadId ) ) ;
0 commit comments