summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-07-07 02:37:15 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-07-07 02:37:15 -0700
commit26c172852dc47910de9850e9e4b6d46687c1d1f0 (patch)
tree233748369bc686e6e153540e2abfc126bc70fed4 /Source
parentbb9ba750495b335597d87dc3c103625f2bc43d94 (diff)
parent1e3e46a731730c02d916ea805ec4b20191509282 (diff)
downloadexternal_webkit-26c172852dc47910de9850e9e4b6d46687c1d1f0.zip
external_webkit-26c172852dc47910de9850e9e4b6d46687c1d1f0.tar.gz
external_webkit-26c172852dc47910de9850e9e4b6d46687c1d1f0.tar.bz2
Merge "Avoid leaking JNI local references in UrlInterceptResponse"
Diffstat (limited to 'Source')
-rw-r--r--Source/WebKit/android/WebCoreSupport/UrlInterceptResponse.cpp2
-rw-r--r--Source/WebKit/android/jni/WebCoreFrameBridge.cpp4
2 files changed, 5 insertions, 1 deletions
diff --git a/Source/WebKit/android/WebCoreSupport/UrlInterceptResponse.cpp b/Source/WebKit/android/WebCoreSupport/UrlInterceptResponse.cpp
index 3779ba8..77e3c32 100644
--- a/Source/WebKit/android/WebCoreSupport/UrlInterceptResponse.cpp
+++ b/Source/WebKit/android/WebCoreSupport/UrlInterceptResponse.cpp
@@ -46,6 +46,7 @@ public:
LOG_ALWAYS_FATAL_IF(!m_read);
m_close = env->GetMethodID(inputStreamClass, "close", "()V");
LOG_ALWAYS_FATAL_IF(!m_close);
+ env->DeleteLocalRef(inputStreamClass);
}
~JavaInputStreamWrapper() {
@@ -112,6 +113,7 @@ UrlInterceptResponse::UrlInterceptResponse(JNIEnv* env, jobject response) {
}
env->DeleteLocalRef(javaResponse);
+ env->DeleteLocalRef(stream);
env->DeleteLocalRef(mimeStr);
env->DeleteLocalRef(encodingStr);
}
diff --git a/Source/WebKit/android/jni/WebCoreFrameBridge.cpp b/Source/WebKit/android/jni/WebCoreFrameBridge.cpp
index bdb502e..9648075 100644
--- a/Source/WebKit/android/jni/WebCoreFrameBridge.cpp
+++ b/Source/WebKit/android/jni/WebCoreFrameBridge.cpp
@@ -525,7 +525,9 @@ WebFrame::shouldInterceptRequest(const WTF::String& url)
env->DeleteLocalRef(urlStr);
if (response == 0)
return 0;
- return new UrlInterceptResponse(env, response);
+ UrlInterceptResponse* result = new UrlInterceptResponse(env, response);
+ env->DeleteLocalRef(response);
+ return result;
}
void