diff options
author | Christopher Ferris <cferris@google.com> | 2022-04-21 20:19:27 -0700 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2022-04-21 20:34:15 -0700 |
commit | fbf0cddf25ffa157a388d0f717c40a6372531d00 (patch) | |
tree | 976dec5e697e52cbee0b1a6461cc4b5d2d5eac3d | |
parent | c885445a01913a3aba298f2b3bdd1ff364ebd7d9 (diff) | |
download | icing-fbf0cddf25ffa157a388d0f717c40a6372531d00.tar.gz |
Fix for memory leaks.
Bug: 230049434
Test: No more leaks.
Change-Id: I0b694c3c1accba109ee18f260da98a0850b8f949
-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); } |