aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2022-04-26 17:38:57 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-04-26 17:38:57 +0000
commitbfae2e25e6ec6cb7af9ffbe2ffff7193704c42f7 (patch)
tree976dec5e697e52cbee0b1a6461cc4b5d2d5eac3d
parentc885445a01913a3aba298f2b3bdd1ff364ebd7d9 (diff)
parentd61db63d396cb76b1a57e287d254582924aa6249 (diff)
downloadicing-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.cc18
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);
}