diff options
author | Elliott Hughes <enh@google.com> | 2011-04-08 14:10:28 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2011-04-08 15:01:19 -0700 |
commit | 69a017bc1d1649350f830dfada5c6ed5eac0b770 (patch) | |
tree | 6ecc6d9658272b268ce931d417930e2ea1bfa3f7 /core/jni/com_android_internal_os_ZygoteInit.cpp | |
parent | 5008e92d1fd573d926cd55c39ca723a6fbdf7c4b (diff) | |
download | frameworks_base-69a017bc1d1649350f830dfada5c6ed5eac0b770.zip frameworks_base-69a017bc1d1649350f830dfada5c6ed5eac0b770.tar.gz frameworks_base-69a017bc1d1649350f830dfada5c6ed5eac0b770.tar.bz2 |
More JNI exception-throwing cleanup.
There are a few (unimportant) bug fixes here. There were several attempts to
throw exceptions in situations where there's already a pending exception.
There were also cases where the code was wrong; it was checking for a NULL
return from Get*ArrayElements and throwing NPE, but passing NULL is an error
that causes a crash and a NULL return means an exception has already been
thrown. I didn't want to get into the Scoped* classes just yet, but that
was by far the easiest way to fix this.
Change-Id: I0b31160ee51b96e82539f6514b8412b149dba7c3
Diffstat (limited to 'core/jni/com_android_internal_os_ZygoteInit.cpp')
-rw-r--r-- | core/jni/com_android_internal_os_ZygoteInit.cpp | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/core/jni/com_android_internal_os_ZygoteInit.cpp b/core/jni/com_android_internal_os_ZygoteInit.cpp index 52e8f42..e627e4a 100644 --- a/core/jni/com_android_internal_os_ZygoteInit.cpp +++ b/core/jni/com_android_internal_os_ZygoteInit.cpp @@ -94,7 +94,7 @@ static jint com_android_internal_os_ZygoteInit_getpgid( return ret; } -static void com_android_internal_os_ZygoteInit_reopenStdio(JNIEnv* env, +static void com_android_internal_os_ZygoteInit_reopenStdio(JNIEnv* env, jobject clazz, jobject in, jobject out, jobject errfd) { int fd; @@ -131,7 +131,7 @@ static void com_android_internal_os_ZygoteInit_reopenStdio(JNIEnv* env, } while (err < 0 && errno == EINTR); } -static void com_android_internal_os_ZygoteInit_closeDescriptor(JNIEnv* env, +static void com_android_internal_os_ZygoteInit_closeDescriptor(JNIEnv* env, jobject clazz, jobject descriptor) { int fd; @@ -206,7 +206,7 @@ static void com_android_internal_os_ZygoteInit_setCapabilities (JNIEnv *env, capdata.effective = effective; capdata.permitted = permitted; - err = capset (&capheader, &capdata); + err = capset (&capheader, &capdata); if (err < 0) { jniThrowIOException(env, errno); @@ -231,7 +231,7 @@ static jlong com_android_internal_os_ZygoteInit_capgetPermitted (JNIEnv *env, capheader.version = _LINUX_CAPABILITY_VERSION; capheader.pid = pid; - err = capget (&capheader, &capdata); + err = capget (&capheader, &capdata); if (err < 0) { jniThrowIOException(env, errno); @@ -243,11 +243,10 @@ static jlong com_android_internal_os_ZygoteInit_capgetPermitted (JNIEnv *env, } static jint com_android_internal_os_ZygoteInit_selectReadable ( - JNIEnv *env, jobject clazz, jobjectArray fds) + JNIEnv *env, jobject clazz, jobjectArray fds) { if (fds == NULL) { - jniThrowException(env, "java/lang/NullPointerException", - "fds == null"); + jniThrowNullPointerException(env, "fds == null"); return -1; } @@ -311,7 +310,7 @@ static jint com_android_internal_os_ZygoteInit_selectReadable ( } static jobject com_android_internal_os_ZygoteInit_createFileDescriptor ( - JNIEnv *env, jobject clazz, jint fd) + JNIEnv *env, jobject clazz, jint fd) { return jniCreateFileDescriptor(env, fd); } @@ -329,17 +328,17 @@ static JNINativeMethod gMethods[] = { (void *) com_android_internal_os_ZygoteInit_setpgid }, { "getpgid", "(I)I", (void *) com_android_internal_os_ZygoteInit_getpgid }, - { "reopenStdio", + { "reopenStdio", "(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;" - "Ljava/io/FileDescriptor;)V", + "Ljava/io/FileDescriptor;)V", (void *) com_android_internal_os_ZygoteInit_reopenStdio}, - { "closeDescriptor", "(Ljava/io/FileDescriptor;)V", + { "closeDescriptor", "(Ljava/io/FileDescriptor;)V", (void *) com_android_internal_os_ZygoteInit_closeDescriptor}, - { "setCloseOnExec", "(Ljava/io/FileDescriptor;Z)V", + { "setCloseOnExec", "(Ljava/io/FileDescriptor;Z)V", (void *) com_android_internal_os_ZygoteInit_setCloseOnExec}, - { "setCapabilities", "(JJ)V", + { "setCapabilities", "(JJ)V", (void *) com_android_internal_os_ZygoteInit_setCapabilities }, - { "capgetPermitted", "(I)J", + { "capgetPermitted", "(I)J", (void *) com_android_internal_os_ZygoteInit_capgetPermitted }, { "selectReadable", "([Ljava/io/FileDescriptor;)I", (void *) com_android_internal_os_ZygoteInit_selectReadable }, @@ -353,4 +352,3 @@ int register_com_android_internal_os_ZygoteInit(JNIEnv* env) } }; // namespace android - |