Commit 202e490e authored by mmenke@chromium.org's avatar mmenke@chromium.org

Fix Java object leaks in net_string_util_icu_alternatives_android.cc.

BUG=401769

Review URL: https://codereview.chromium.org/449253002

Cr-Commit-Position: refs/heads/master@{#288384}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288384 0039d316-1c4b-4281-b951-d872f2087c98
parent 40e54f85
...@@ -20,12 +20,13 @@ namespace { ...@@ -20,12 +20,13 @@ namespace {
ScopedJavaLocalRef<jstring> ConvertToJstring(const std::string& text, ScopedJavaLocalRef<jstring> ConvertToJstring(const std::string& text,
const char* charset) { const char* charset) {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
jobject java_byte_buffer = ScopedJavaLocalRef<jobject> java_byte_buffer(
env->NewDirectByteBuffer(const_cast<char*>(text.data()), text.length()); env,
env->NewDirectByteBuffer(const_cast<char*>(text.data()), text.length()));
base::android::ScopedJavaLocalRef<jstring> java_charset = base::android::ScopedJavaLocalRef<jstring> java_charset =
base::android::ConvertUTF8ToJavaString(env, base::StringPiece(charset)); base::android::ConvertUTF8ToJavaString(env, base::StringPiece(charset));
ScopedJavaLocalRef<jstring> java_result = ScopedJavaLocalRef<jstring> java_result =
android::Java_NetStringUtil_convertToUnicode(env, java_byte_buffer, android::Java_NetStringUtil_convertToUnicode(env, java_byte_buffer.obj(),
java_charset.obj()); java_charset.obj());
return java_result; return java_result;
} }
...@@ -36,13 +37,14 @@ ScopedJavaLocalRef<jstring> ConvertToJstring(const std::string& text, ...@@ -36,13 +37,14 @@ ScopedJavaLocalRef<jstring> ConvertToJstring(const std::string& text,
ScopedJavaLocalRef<jstring> ConvertToNormalizedJstring( ScopedJavaLocalRef<jstring> ConvertToNormalizedJstring(
const std::string& text, const char* charset) { const std::string& text, const char* charset) {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
jobject java_byte_buffer = ScopedJavaLocalRef<jobject> java_byte_buffer(
env->NewDirectByteBuffer(const_cast<char*>(text.data()), text.length()); env,
env->NewDirectByteBuffer(const_cast<char*>(text.data()), text.length()));
base::android::ScopedJavaLocalRef<jstring> java_charset = base::android::ScopedJavaLocalRef<jstring> java_charset =
base::android::ConvertUTF8ToJavaString(env, base::StringPiece(charset)); base::android::ConvertUTF8ToJavaString(env, base::StringPiece(charset));
ScopedJavaLocalRef<jstring> java_result = ScopedJavaLocalRef<jstring> java_result =
android::Java_NetStringUtil_convertToUnicodeAndNormalize( android::Java_NetStringUtil_convertToUnicodeAndNormalize(
env, java_byte_buffer, java_charset.obj()); env, java_byte_buffer.obj(), java_charset.obj());
return java_result; return java_result;
} }
...@@ -51,13 +53,14 @@ ScopedJavaLocalRef<jstring> ConvertToNormalizedJstring( ...@@ -51,13 +53,14 @@ ScopedJavaLocalRef<jstring> ConvertToNormalizedJstring(
ScopedJavaLocalRef<jstring> ConvertToJstringWithSubstitutions( ScopedJavaLocalRef<jstring> ConvertToJstringWithSubstitutions(
const std::string& text, const char* charset) { const std::string& text, const char* charset) {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
jobject java_byte_buffer = ScopedJavaLocalRef<jobject> java_byte_buffer(
env->NewDirectByteBuffer(const_cast<char*>(text.data()), text.length()); env,
env->NewDirectByteBuffer(const_cast<char*>(text.data()), text.length()));
base::android::ScopedJavaLocalRef<jstring> java_charset = base::android::ScopedJavaLocalRef<jstring> java_charset =
base::android::ConvertUTF8ToJavaString(env, base::StringPiece(charset)); base::android::ConvertUTF8ToJavaString(env, base::StringPiece(charset));
ScopedJavaLocalRef<jstring> java_result = ScopedJavaLocalRef<jstring> java_result =
android::Java_NetStringUtil_convertToUnicodeWithSubstitutions( android::Java_NetStringUtil_convertToUnicodeWithSubstitutions(
env, java_byte_buffer, java_charset.obj()); env, java_byte_buffer.obj(), java_charset.obj());
return java_result; return java_result;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment