diff options
author | Matt Holgate <matt@emobix.co.uk> | 2014-07-03 12:10:27 +0100 |
---|---|---|
committer | Matt Holgate <matt@emobix.co.uk> | 2014-07-03 12:10:27 +0100 |
commit | 598e69fb9f793fe1ca5be904d92e8e4da765cc76 (patch) | |
tree | 747dd84b8e197d63ea6da030791c013a82a74444 /platform/ios/Classes | |
parent | 3b2bc7c15844af39ac08fe5b0a9681ba1cce2dc0 (diff) | |
download | mupdf-598e69fb9f793fe1ca5be904d92e8e4da765cc76.tar.xz |
Don't crash if a document fails to open on iOS.
Handle exceptions from fz_open_document().
Diffstat (limited to 'platform/ios/Classes')
-rw-r--r-- | platform/ios/Classes/MuDocRef.m | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/platform/ios/Classes/MuDocRef.m b/platform/ios/Classes/MuDocRef.m index a130fdd3..db82bbab 100644 --- a/platform/ios/Classes/MuDocRef.m +++ b/platform/ios/Classes/MuDocRef.m @@ -10,16 +10,29 @@ if (self) { dispatch_sync(queue, ^{}); - doc = fz_open_document(ctx, aFilename); - if (!doc) + + fz_var(self); + fz_var(doc); + + fz_try(ctx) { - self = nil; + doc = fz_open_document(ctx, aFilename); + if (!doc) + { + self = nil; + } + else + { + pdf_document *idoc = pdf_specifics(doc); + if (idoc) pdf_enable_js(idoc); + interactive = (idoc != NULL) && (pdf_crypt_version(idoc) == 0); + } } - else + fz_catch(ctx) { - pdf_document *idoc = pdf_specifics(doc); - if (idoc) pdf_enable_js(idoc); - interactive = (idoc != NULL) && (pdf_crypt_version(idoc) == 0); + if (doc != NULL) + fz_close_document(doc); + self = nil; } } return self; |