diff options
author | Christopher Ferris <cferris@google.com> | 2022-04-26 17:38:57 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-04-26 17:38:57 +0000 |
commit | bfae2e25e6ec6cb7af9ffbe2ffff7193704c42f7 (patch) | |
tree | 976dec5e697e52cbee0b1a6461cc4b5d2d5eac3d | |
parent | c885445a01913a3aba298f2b3bdd1ff364ebd7d9 (diff) | |
parent | d61db63d396cb76b1a57e287d254582924aa6249 (diff) | |
download | icing-bfae2e25e6ec6cb7af9ffbe2ffff7193704c42f7.tar.gz |
Fix for memory leaks. am: fbf0cddf25 am: d61db63d39
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/icing/+/17902806
Change-Id: I26cd29941e6c46f96d5682c81ca64c2ae80e6f07
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | icing/jni/icing-search-engine-jni.cc | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/icing/jni/icing-search-engine-jni.cc b/icing/jni/icing-search-engine-jni.cc index 51d3423..bcc35e6 100644 --- a/icing/jni/icing-search-engine-jni.cc +++ b/icing/jni/icing-search-engine-jni.cc @@ -166,6 +166,7 @@ Java_com_google_android_icing_IcingSearchEngine_nativeGetSchemaType( env->GetStringUTFChars(schema_type, /*isCopy=*/nullptr); icing::lib::GetSchemaTypeResultProto get_schema_type_result_proto = icing->GetSchemaType(native_schema_type); + env->ReleaseStringUTFChars(schema_type, native_schema_type); return SerializeProtoToJniByteArray(env, get_schema_type_result_proto); } @@ -192,19 +193,20 @@ JNIEXPORT jbyteArray JNICALL Java_com_google_android_icing_IcingSearchEngine_nativeGet( JNIEnv* env, jclass clazz, jobject object, jstring name_space, jstring uri, jbyteArray result_spec_bytes) { - icing::lib::IcingSearchEngine* icing = - GetIcingSearchEnginePointer(env, object); - - const char* native_name_space = - env->GetStringUTFChars(name_space, /*isCopy=*/nullptr); - const char* native_uri = env->GetStringUTFChars(uri, /*isCopy=*/nullptr); icing::lib::GetResultSpecProto get_result_spec; if (!ParseProtoFromJniByteArray(env, result_spec_bytes, &get_result_spec)) { ICING_LOG(ERROR) << "Failed to parse GetResultSpecProto in nativeGet"; return nullptr; } + icing::lib::IcingSearchEngine* icing = + GetIcingSearchEnginePointer(env, object); + const char* native_name_space = + env->GetStringUTFChars(name_space, /*isCopy=*/nullptr); + const char* native_uri = env->GetStringUTFChars(uri, /*isCopy=*/nullptr); icing::lib::GetResultProto get_result_proto = icing->Get(native_name_space, native_uri, get_result_spec); + env->ReleaseStringUTFChars(uri, native_uri); + env->ReleaseStringUTFChars(name_space, native_name_space); return SerializeProtoToJniByteArray(env, get_result_proto); } @@ -306,6 +308,8 @@ Java_com_google_android_icing_IcingSearchEngine_nativeDelete( const char* native_uri = env->GetStringUTFChars(uri, /*isCopy=*/nullptr); icing::lib::DeleteResultProto delete_result_proto = icing->Delete(native_name_space, native_uri); + env->ReleaseStringUTFChars(uri, native_uri); + env->ReleaseStringUTFChars(name_space, native_name_space); return SerializeProtoToJniByteArray(env, delete_result_proto); } @@ -320,6 +324,7 @@ Java_com_google_android_icing_IcingSearchEngine_nativeDeleteByNamespace( env->GetStringUTFChars(name_space, /*isCopy=*/nullptr); icing::lib::DeleteByNamespaceResultProto delete_by_namespace_result_proto = icing->DeleteByNamespace(native_name_space); + env->ReleaseStringUTFChars(name_space, native_name_space); return SerializeProtoToJniByteArray(env, delete_by_namespace_result_proto); } @@ -334,6 +339,7 @@ Java_com_google_android_icing_IcingSearchEngine_nativeDeleteBySchemaType( env->GetStringUTFChars(schema_type, /*isCopy=*/nullptr); icing::lib::DeleteBySchemaTypeResultProto delete_by_schema_type_result_proto = icing->DeleteBySchemaType(native_schema_type); + env->ReleaseStringUTFChars(schema_type, native_schema_type); return SerializeProtoToJniByteArray(env, delete_by_schema_type_result_proto); } |