Skip to content

Commit 078d13e

Browse files
author
Alexander Scherbatiy
committed
8285397: JNI exception pending in CUPSfuncs.c:250
Backport-of: a03438cb1b915c89739fc974e5b84adc38bd14bf
1 parent c06f920 commit 078d13e

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/java.desktop/unix/native/common/awt/CUPSfuncs.c

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ Java_sun_print_CUPSPrinter_getCupsDefaultPrinters(JNIEnv *env,
246246
for (i = 0; i < num_dests; i++) {
247247
utf_str = JNU_NewStringPlatform(env, dests[i].name);
248248
if (utf_str == NULL) {
249+
(*env)->ExceptionClear(env);
249250
for (j = i - 1; j >= 0; j--) {
250251
utf_str = (*env)->GetObjectArrayElement(env, nameArray, j);
251252
(*env)->SetObjectArrayElement(env, nameArray, j, NULL);
@@ -345,8 +346,9 @@ Java_sun_print_CUPSPrinter_getMedia(JNIEnv *env,
345346
unlink(filename);
346347
j2d_ppdClose(ppd);
347348
DPRINTF("CUPSfuncs::bad alloc new array\n", "")
348-
(*env)->ExceptionClear(env);
349-
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
349+
if (!(*env)->ExceptionCheck(env)) {
350+
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
351+
}
350352
return NULL;
351353
}
352354

@@ -357,7 +359,9 @@ Java_sun_print_CUPSPrinter_getMedia(JNIEnv *env,
357359
unlink(filename);
358360
j2d_ppdClose(ppd);
359361
DPRINTF("CUPSfuncs::bad alloc new string ->text\n", "")
360-
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
362+
if (!(*env)->ExceptionCheck(env)) {
363+
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
364+
}
361365
return NULL;
362366
}
363367
(*env)->SetObjectArrayElement(env, nameArray, i*2, utf_str);
@@ -367,7 +371,9 @@ Java_sun_print_CUPSPrinter_getMedia(JNIEnv *env,
367371
unlink(filename);
368372
j2d_ppdClose(ppd);
369373
DPRINTF("CUPSfuncs::bad alloc new string ->choice\n", "")
370-
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
374+
if (!(*env)->ExceptionCheck(env)) {
375+
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
376+
}
371377
return NULL;
372378
}
373379
(*env)->SetObjectArrayElement(env, nameArray, i*2+1, utf_str);
@@ -381,7 +387,9 @@ Java_sun_print_CUPSPrinter_getMedia(JNIEnv *env,
381387
unlink(filename);
382388
j2d_ppdClose(ppd);
383389
DPRINTF("CUPSfuncs::bad alloc new string text\n", "")
384-
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
390+
if (!(*env)->ExceptionCheck(env)) {
391+
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
392+
}
385393
return NULL;
386394
}
387395
(*env)->SetObjectArrayElement(env, nameArray,
@@ -392,7 +400,9 @@ Java_sun_print_CUPSPrinter_getMedia(JNIEnv *env,
392400
unlink(filename);
393401
j2d_ppdClose(ppd);
394402
DPRINTF("CUPSfuncs::bad alloc new string choice\n", "")
395-
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
403+
if (!(*env)->ExceptionCheck(env)) {
404+
JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
405+
}
396406
return NULL;
397407
}
398408
(*env)->SetObjectArrayElement(env, nameArray,

0 commit comments

Comments
 (0)