From c373cc8e44b0b32220088059ada161edfd0a2d78 Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Thu, 21 Mar 2013 16:50:52 +0000 Subject: Bug 693719: Android: Catch exceptions when counting pages. Return 0. Check for this case when opening a PDF and give a nice dialogue. Fix the nice dialogue code so that it doesn't crash afterwards due to a null mSearchTask. --- android/jni/mupdf.c | 12 +++++++++++- android/src/com/artifex/mupdfdemo/MuPDFActivity.java | 5 ++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/android/jni/mupdf.c b/android/jni/mupdf.c index 74d9970d..c929e13e 100644 --- a/android/jni/mupdf.c +++ b/android/jni/mupdf.c @@ -447,8 +447,18 @@ JNIEXPORT int JNICALL JNI_FN(MuPDFCore_countPagesInternal)(JNIEnv *env, jobject thiz) { globals *glo = get_globals(env, thiz); + fz_context *ctx = glo->ctx; + int count = 0; - return fz_count_pages(glo->doc); + fz_try(ctx) + { + count = fz_count_pages(glo->doc); + } + fz_catch(ctx) + { + LOGE("exception while counting pages: %s", ctx->error->message); + } + return count; } JNIEXPORT void JNICALL diff --git a/android/src/com/artifex/mupdfdemo/MuPDFActivity.java b/android/src/com/artifex/mupdfdemo/MuPDFActivity.java index 4f10e991..be8dca89 100644 --- a/android/src/com/artifex/mupdfdemo/MuPDFActivity.java +++ b/android/src/com/artifex/mupdfdemo/MuPDFActivity.java @@ -312,6 +312,8 @@ public class MuPDFActivity extends Activity core = openFile(Uri.decode(uri.getEncodedPath())); } SearchTaskResult.set(null); + if (core.countPages() == 0) + core = null; } if (core != null && core.needsPassword()) { requestPassword(savedInstanceState); @@ -743,7 +745,8 @@ public class MuPDFActivity extends Activity protected void onPause() { super.onPause(); - mSearchTask.stop(); + if (mSearchTask != null) + mSearchTask.stop(); if (mFileName != null && mDocView != null) { SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE); -- cgit v1.2.3