diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2017-04-18 03:47:23 +0800 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2017-04-18 19:39:40 +0800 |
commit | b2a2b561e1795df5402b87f50e856e4b9a5d77b0 (patch) | |
tree | fc9a3b77549e47bfb9bd0b3950ab378eec8d33da /platform | |
parent | 6f1d0b83fe805e5c49b62d5438252de6fe37a383 (diff) | |
download | mupdf-b2a2b561e1795df5402b87f50e856e4b9a5d77b0.tar.xz |
jni: NewStringUTF() may throw exception, handle this.
When NewStringUTF() throws an exception NewObject() may not
be called. Change to code to avoid this.
Diffstat (limited to 'platform')
-rw-r--r-- | platform/java/mupdf_native.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index fe6db618..b2ec3eb1 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -4525,14 +4525,18 @@ FUN(Page_getSeparation)(JNIEnv *env, jobject self, jint sep) char rgba[4]; unsigned int bgra; unsigned int cmyk; - jobject jname; + jobject jname = NULL; if (!ctx || !page) return NULL; /* MuPDF returns RGBA as bytes. Android wants a packed BGRA int. */ name = fz_get_separation_on_page(ctx, page, sep, (unsigned int *)(&rgba[0]), &cmyk); bgra = (rgba[0] << 16) | (rgba[1]<<8) | rgba[2] | (rgba[3]<<24); - jname = name ? (*env)->NewStringUTF(env, name) : NULL; + if (name) + { + jname = (*env)->NewStringUTF(env, name); + if (!jname) return NULL; + } return (*env)->NewObject(env, cls_Separation, mid_Separation_init, jname, bgra, cmyk); } |