8036609: Check jdk/src/windows/native/java/lang/ProcessImpl_md.c for JNI pending exceptions
Summary: added ExceptionCheck fater JNI calls
Reviewed-by: chegar
--- a/jdk/src/windows/native/java/lang/ProcessImpl_md.c Thu Mar 20 21:03:43 2014 +0000
+++ b/jdk/src/windows/native/java/lang/ProcessImpl_md.c Thu Mar 20 21:14:51 2014 +0000
@@ -359,24 +359,28 @@
const jchar *penvBlock = (envBlock != NULL)
? (*env)->GetStringChars(env, envBlock, NULL)
: NULL;
- const jchar *pdir = (dir != NULL)
- ? (*env)->GetStringChars(env, dir, NULL)
- : NULL;
- jlong *handles = (*env)->GetLongArrayElements(env, stdHandles, NULL);
- if (handles != NULL) {
- ret = processCreate(
- env,
- pcmd,
- penvBlock,
- pdir,
- handles,
- redirectErrorStream);
- (*env)->ReleaseLongArrayElements(env, stdHandles, handles, 0);
+ if (!(*env)->ExceptionCheck(env)) {
+ const jchar *pdir = (dir != NULL)
+ ? (*env)->GetStringChars(env, dir, NULL)
+ : NULL;
+ if (!(*env)->ExceptionCheck(env)) {
+ jlong *handles = (*env)->GetLongArrayElements(env, stdHandles, NULL);
+ if (handles != NULL) {
+ ret = processCreate(
+ env,
+ pcmd,
+ penvBlock,
+ pdir,
+ handles,
+ redirectErrorStream);
+ (*env)->ReleaseLongArrayElements(env, stdHandles, handles, 0);
+ }
+ if (pdir != NULL)
+ (*env)->ReleaseStringChars(env, dir, pdir);
+ }
+ if (penvBlock != NULL)
+ (*env)->ReleaseStringChars(env, envBlock, penvBlock);
}
- if (pdir != NULL)
- (*env)->ReleaseStringChars(env, dir, pdir);
- if (penvBlock != NULL)
- (*env)->ReleaseStringChars(env, envBlock, penvBlock);
(*env)->ReleaseStringChars(env, cmd, pcmd);
}
}
@@ -448,7 +452,7 @@
JNIEXPORT jboolean JNICALL
Java_java_lang_ProcessImpl_closeHandle(JNIEnv *env, jclass ignored, jlong handle)
{
- return CloseHandle((HANDLE) handle);
+ return (jboolean) CloseHandle((HANDLE) handle);
}
/**