Throw IllegalStateException if native objects are used after dispose.
This makes it easier to debug issues related to double dispose /
use after dispose.
Bug: webrtc:7566, webrtc:8297
Change-Id: I07429b2b794deabb62b5f3ea1cf92eea6f66a149
Reviewed-on: https://webrtc-review.googlesource.com/102540
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24894}
diff --git a/sdk/android/api/org/webrtc/TurnCustomizer.java b/sdk/android/api/org/webrtc/TurnCustomizer.java
index bfc72ea..41bedb7 100644
--- a/sdk/android/api/org/webrtc/TurnCustomizer.java
+++ b/sdk/android/api/org/webrtc/TurnCustomizer.java
@@ -12,20 +12,30 @@
/** Java wrapper for a C++ TurnCustomizer. */
public class TurnCustomizer {
- final long nativeTurnCustomizer;
+ private long nativeTurnCustomizer;
public TurnCustomizer(long nativeTurnCustomizer) {
this.nativeTurnCustomizer = nativeTurnCustomizer;
}
public void dispose() {
+ checkTurnCustomizerExists();
nativeFreeTurnCustomizer(nativeTurnCustomizer);
+ nativeTurnCustomizer = 0;
}
private static native void nativeFreeTurnCustomizer(long turnCustomizer);
+ /** Return a pointer to webrtc::TurnCustomizer. */
@CalledByNative
long getNativeTurnCustomizer() {
+ checkTurnCustomizerExists();
return nativeTurnCustomizer;
}
+
+ private void checkTurnCustomizerExists() {
+ if (nativeTurnCustomizer == 0) {
+ throw new IllegalStateException("TurnCustomizer has been disposed.");
+ }
+ }
}