aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-07-07 01:09:22 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-07-07 01:09:22 +0000
commit3833396f6e928b6c0ab62ef1582881b9599c9ce7 (patch)
tree967af8f9511a83034c784fcc5dcaab43a4e5eba5
parent0b1d7ef9e8ab0078f46833d5d3b71d1664181d21 (diff)
parentf55c65db82cc25e0db5257357ee9d3b123b5c78a (diff)
downloadlibnativehelper-android14-mainline-tethering-release.tar.gz
Snap for 10447354 from f55c65db82cc25e0db5257357ee9d3b123b5c78a to mainline-tethering-releaseaml_tet_341411060aml_tet_341310230aml_tet_341112070aml_tet_341010040aml_tet_340913030android14-mainline-tethering-release
Change-Id: I26fbecdb37ead63512843e3a3059759529c94dda
-rw-r--r--Android.bp1
-rw-r--r--JNIHelp.c10
-rw-r--r--include_jni/jni.h1
-rw-r--r--include_platform_header_only/nativehelper/jni_macros.h2
4 files changed, 9 insertions, 5 deletions
diff --git a/Android.bp b/Android.bp
index 91ac351..b161d58 100644
--- a/Android.bp
+++ b/Android.bp
@@ -43,6 +43,7 @@ cc_library_headers {
host_supported: true,
export_include_dirs: ["include_jni"],
native_bridge_supported: true,
+ product_available: true,
vendor_available: true,
target: {
windows: {
diff --git a/JNIHelp.c b/JNIHelp.c
index fba7f8d..cb008a6 100644
--- a/JNIHelp.c
+++ b/JNIHelp.c
@@ -100,14 +100,16 @@ static bool GetExceptionSummary(JNIEnv* env, jthrowable thrown, struct Expandabl
(*env)->DeleteLocalRef(env, className);
className = NULL;
+ bool success = false;
jmethodID getMessage =
FindMethod(env, "java/lang/Throwable", "getMessage", "()Ljava/lang/String;");
jstring message = (jstring) (*env)->CallObjectMethod(env, thrown, getMessage);
- if (message == NULL) {
- return true;
+ if (message != NULL) {
+ success = (ExpandableStringAppend(dst, ": ") && AppendJString(env, message, dst));
+ } else if ((*env)->ExceptionOccurred(env) == NULL) {
+ success = true;
}
- bool success = (ExpandableStringAppend(dst, ": ") && AppendJString(env, message, dst));
if (!success) {
// Two potential reasons for reaching here:
//
@@ -169,7 +171,7 @@ static bool GetStackTrace(JNIEnv* env, jthrowable thrown, struct ExpandableStrin
FindMethod(env, "java/lang/Throwable", "printStackTrace", "(Ljava/io/PrintWriter;)V");
(*env)->CallVoidMethod(env, thrown, printStackTrace, pw);
- jstring trace = StringWriterToString(env, sw);
+ jstring trace = ((*env)->ExceptionOccurred(env) != NULL) ? NULL : StringWriterToString(env, sw);
(*env)->DeleteLocalRef(env, pw);
pw = NULL;
diff --git a/include_jni/jni.h b/include_jni/jni.h
index 67417a5..8346ca4 100644
--- a/include_jni/jni.h
+++ b/include_jni/jni.h
@@ -771,6 +771,7 @@ struct _JNIEnv {
CALL_STATIC_TYPE(jfloat, Float)
CALL_STATIC_TYPE(jdouble, Double)
+ __attribute__((no_stack_protector))
void CallStaticVoidMethod(jclass clazz, jmethodID methodID, ...)
{
va_list args;
diff --git a/include_platform_header_only/nativehelper/jni_macros.h b/include_platform_header_only/nativehelper/jni_macros.h
index 79f23c8..ca03288 100644
--- a/include_platform_header_only/nativehelper/jni_macros.h
+++ b/include_platform_header_only/nativehelper/jni_macros.h
@@ -41,7 +41,7 @@
* JNINativeMethod[] gMethods = {
* MAKE_JNI_NATIVE_METHOD("normal", "(I)Ljava/lang/Object;", KlassName_normal),
* MAKE_JNI_FAST_NATIVE_METHOD("fast", "(I)Ljava/lang/Object;", KlassName_fast),
- * MAKE_JNI_CRITICAL_NATIVE_METHOD("critical", "(Z)I", KlassName_critical),
+ * MAKE_JNI_CRITICAL_NATIVE_METHOD("critical", "(J)I", KlassName_critical),
* };
*
* // Automatically infer the signature: