Make sure access to WebView::mWebViewCore is synchronized.
Fix bug: 2498784
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 6079a37..e81fec4 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -1125,9 +1125,11 @@
mCallbackProxy.setWebViewClient(null);
mCallbackProxy.setWebChromeClient(null);
// Tell WebViewCore to destroy itself
- WebViewCore webViewCore = mWebViewCore;
- mWebViewCore = null; // prevent using partial webViewCore
- webViewCore.destroy();
+ synchronized (this) {
+ WebViewCore webViewCore = mWebViewCore;
+ mWebViewCore = null; // prevent using partial webViewCore
+ webViewCore.destroy();
+ }
// Remove any pending messages that might not be serviced yet.
mPrivateHandler.removeCallbacksAndMessages(null);
mCallbackProxy.removeCallbacksAndMessages(null);
@@ -5842,7 +5844,7 @@
cursorData(), 1000);
}
- /* package */ WebViewCore getWebViewCore() {
+ /* package */ synchronized WebViewCore getWebViewCore() {
return mWebViewCore;
}