diff options
author | Robin Watts <robin.watts@artifex.com> | 2011-09-11 19:29:42 -0500 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2011-09-14 17:44:13 +0100 |
commit | 89ae81f651bfa112b8e07317eb6983beaf7cb212 (patch) | |
tree | 3f99dad1253b795629e66d45b915c1d72043242b /pdf | |
parent | cefb81f1886685580a40b17b5e495a8a8a1ebeaf (diff) | |
download | mupdf-89ae81f651bfa112b8e07317eb6983beaf7cb212.tar.xz |
Initial import of exception handling code
Import exception handling code from WSS, modified to fit into the
fitz world.
With this code we have 'real' fz_try/fz_catch/fz_rethrow functions,
handling a fz_except type. We therefore rename the existing fz_throw/
fz_catch/fz_rethrow to be fz_error_make/fz_error_handle/fz_error_note.
We don't actually use fz_try/fz_catch/fz_rethrow yet...
Diffstat (limited to 'pdf')
-rw-r--r-- | pdf/pdf_annot.c | 2 | ||||
-rw-r--r-- | pdf/pdf_cmap_load.c | 12 | ||||
-rw-r--r-- | pdf/pdf_cmap_parse.c | 74 | ||||
-rw-r--r-- | pdf/pdf_colorspace.c | 26 | ||||
-rw-r--r-- | pdf/pdf_crypt.c | 36 | ||||
-rw-r--r-- | pdf/pdf_font.c | 54 | ||||
-rw-r--r-- | pdf/pdf_function.c | 90 | ||||
-rw-r--r-- | pdf/pdf_image.c | 40 | ||||
-rw-r--r-- | pdf/pdf_interpret.c | 122 | ||||
-rw-r--r-- | pdf/pdf_lex.c | 2 | ||||
-rw-r--r-- | pdf/pdf_page.c | 16 | ||||
-rw-r--r-- | pdf/pdf_parse.c | 64 | ||||
-rw-r--r-- | pdf/pdf_pattern.c | 2 | ||||
-rw-r--r-- | pdf/pdf_repair.c | 34 | ||||
-rw-r--r-- | pdf/pdf_shade.c | 22 | ||||
-rw-r--r-- | pdf/pdf_stream.c | 30 | ||||
-rw-r--r-- | pdf/pdf_type3.c | 8 | ||||
-rw-r--r-- | pdf/pdf_unicode.c | 4 | ||||
-rw-r--r-- | pdf/pdf_xobject.c | 4 | ||||
-rw-r--r-- | pdf/pdf_xref.c | 136 |
20 files changed, 389 insertions, 389 deletions
diff --git a/pdf/pdf_annot.c b/pdf/pdf_annot.c index 2fc9d7bb..8401d79b 100644 --- a/pdf/pdf_annot.c +++ b/pdf/pdf_annot.c @@ -204,7 +204,7 @@ pdf_load_annots(pdf_annot **annotp, pdf_xref *xref, fz_obj *annots) error = pdf_load_xobject(&form, xref, n); if (error) { - fz_catch(error, "ignoring broken annotation"); + fz_error_handle(error, "ignoring broken annotation"); continue; } diff --git a/pdf/pdf_cmap_load.c b/pdf/pdf_cmap_load.c index 12adeb40..7acc60d3 100644 --- a/pdf/pdf_cmap_load.c +++ b/pdf/pdf_cmap_load.c @@ -23,14 +23,14 @@ pdf_load_embedded_cmap(pdf_cmap **cmapp, pdf_xref *xref, fz_obj *stmobj) error = pdf_open_stream(&file, xref, fz_to_num(stmobj), fz_to_gen(stmobj)); if (error) { - error = fz_rethrow(error, "cannot open cmap stream (%d %d R)", fz_to_num(stmobj), fz_to_gen(stmobj)); + error = fz_error_note(error, "cannot open cmap stream (%d %d R)", fz_to_num(stmobj), fz_to_gen(stmobj)); goto cleanup; } error = pdf_parse_cmap(&cmap, file); if (error) { - error = fz_rethrow(error, "cannot parse cmap stream (%d %d R)", fz_to_num(stmobj), fz_to_gen(stmobj)); + error = fz_error_note(error, "cannot parse cmap stream (%d %d R)", fz_to_num(stmobj), fz_to_gen(stmobj)); goto cleanup; } @@ -46,7 +46,7 @@ pdf_load_embedded_cmap(pdf_cmap **cmapp, pdf_xref *xref, fz_obj *stmobj) error = pdf_load_system_cmap(&usecmap, fz_to_name(obj)); if (error) { - error = fz_rethrow(error, "cannot load system usecmap '%s'", fz_to_name(obj)); + error = fz_error_note(error, "cannot load system usecmap '%s'", fz_to_name(obj)); goto cleanup; } pdf_set_usecmap(cmap, usecmap); @@ -57,7 +57,7 @@ pdf_load_embedded_cmap(pdf_cmap **cmapp, pdf_xref *xref, fz_obj *stmobj) error = pdf_load_embedded_cmap(&usecmap, xref, obj); if (error) { - error = fz_rethrow(error, "cannot load embedded usecmap (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + error = fz_error_note(error, "cannot load embedded usecmap (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); goto cleanup; } pdf_set_usecmap(cmap, usecmap); @@ -103,13 +103,13 @@ pdf_load_system_cmap(pdf_cmap **cmapp, char *cmap_name) cmap = pdf_find_builtin_cmap(cmap_name); if (!cmap) - return fz_throw("no builtin cmap file: %s", cmap_name); + return fz_error_make("no builtin cmap file: %s", cmap_name); if (cmap->usecmap_name[0] && !cmap->usecmap) { usecmap = pdf_find_builtin_cmap(cmap->usecmap_name); if (!usecmap) - return fz_throw("nu builtin cmap file: %s", cmap->usecmap_name); + return fz_error_make("nu builtin cmap file: %s", cmap->usecmap_name); pdf_set_usecmap(cmap, usecmap); } diff --git a/pdf/pdf_cmap_parse.c b/pdf/pdf_cmap_parse.c index edd97de8..06421fbb 100644 --- a/pdf/pdf_cmap_parse.c +++ b/pdf/pdf_cmap_parse.c @@ -55,7 +55,7 @@ pdf_lex_cmap(int *tok, fz_stream *file, char *buf, int n, int *sl) error = pdf_lex(tok, file, buf, n, sl); if (error) - return fz_rethrow(error, "cannot parse cmap token"); + return fz_error_note(error, "cannot parse cmap token"); if (*tok == PDF_TOK_KEYWORD) *tok = pdf_cmap_token_from_keyword(buf); @@ -73,7 +73,7 @@ pdf_parse_cmap_name(pdf_cmap *cmap, fz_stream *file) error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == PDF_TOK_NAME) fz_strlcpy(cmap->cmap_name, buf, sizeof(cmap->cmap_name)); @@ -93,7 +93,7 @@ pdf_parse_wmode(pdf_cmap *cmap, fz_stream *file) error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == PDF_TOK_INT) pdf_set_wmode(cmap, atoi(buf)); @@ -116,7 +116,7 @@ pdf_parse_codespace_range(pdf_cmap *cmap, fz_stream *file) { error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == TOK_END_CODESPACE_RANGE) return fz_okay; @@ -126,7 +126,7 @@ pdf_parse_codespace_range(pdf_cmap *cmap, fz_stream *file) lo = pdf_code_from_string(buf, len); error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == PDF_TOK_STRING) { hi = pdf_code_from_string(buf, len); @@ -138,7 +138,7 @@ pdf_parse_codespace_range(pdf_cmap *cmap, fz_stream *file) else break; } - return fz_throw("expected string or endcodespacerange"); + return fz_error_make("expected string or endcodespacerange"); } static fz_error @@ -154,29 +154,29 @@ pdf_parse_cid_range(pdf_cmap *cmap, fz_stream *file) { error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == TOK_END_CID_RANGE) return fz_okay; else if (tok != PDF_TOK_STRING) - return fz_throw("expected string or endcidrange"); + return fz_error_make("expected string or endcidrange"); lo = pdf_code_from_string(buf, len); error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok != PDF_TOK_STRING) - return fz_throw("expected string"); + return fz_error_make("expected string"); hi = pdf_code_from_string(buf, len); error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok != PDF_TOK_INT) - return fz_throw("expected integer"); + return fz_error_make("expected integer"); dst = atoi(buf); @@ -197,21 +197,21 @@ pdf_parse_cid_char(pdf_cmap *cmap, fz_stream *file) { error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == TOK_END_CID_CHAR) return fz_okay; else if (tok != PDF_TOK_STRING) - return fz_throw("expected string or endcidchar"); + return fz_error_make("expected string or endcidchar"); src = pdf_code_from_string(buf, len); error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok != PDF_TOK_INT) - return fz_throw("expected integer"); + return fz_error_make("expected integer"); dst = atoi(buf); @@ -233,14 +233,14 @@ pdf_parse_bf_range_array(pdf_cmap *cmap, fz_stream *file, int lo, int hi) { error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == PDF_TOK_CLOSE_ARRAY) return fz_okay; /* Note: does not handle [ /Name /Name ... ] */ else if (tok != PDF_TOK_STRING) - return fz_throw("expected string or ]"); + return fz_error_make("expected string or ]"); if (len / 2) { @@ -267,27 +267,27 @@ pdf_parse_bf_range(pdf_cmap *cmap, fz_stream *file) { error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == TOK_END_BF_RANGE) return fz_okay; else if (tok != PDF_TOK_STRING) - return fz_throw("expected string or endbfrange"); + return fz_error_make("expected string or endbfrange"); lo = pdf_code_from_string(buf, len); error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok != PDF_TOK_STRING) - return fz_throw("expected string"); + return fz_error_make("expected string"); hi = pdf_code_from_string(buf, len); error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == PDF_TOK_STRING) { @@ -320,12 +320,12 @@ pdf_parse_bf_range(pdf_cmap *cmap, fz_stream *file) { error = pdf_parse_bf_range_array(cmap, file, lo, hi); if (error) - return fz_rethrow(error, "cannot map bfrange"); + return fz_error_note(error, "cannot map bfrange"); } else { - return fz_throw("expected string or array or endbfrange"); + return fz_error_make("expected string or array or endbfrange"); } } } @@ -345,22 +345,22 @@ pdf_parse_bf_char(pdf_cmap *cmap, fz_stream *file) { error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); if (tok == TOK_END_BF_CHAR) return fz_okay; else if (tok != PDF_TOK_STRING) - return fz_throw("expected string or endbfchar"); + return fz_error_make("expected string or endbfchar"); src = pdf_code_from_string(buf, len); error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "syntaxerror in cmap"); + return fz_error_note(error, "syntaxerror in cmap"); /* Note: does not handle /dstName */ if (tok != PDF_TOK_STRING) - return fz_throw("expected string"); + return fz_error_make("expected string"); if (len / 2) { @@ -390,7 +390,7 @@ pdf_parse_cmap(pdf_cmap **cmapp, fz_stream *file) error = pdf_lex_cmap(&tok, file, buf, sizeof buf, &len); if (error) { - error = fz_rethrow(error, "syntaxerror in cmap"); + error = fz_error_note(error, "syntaxerror in cmap"); goto cleanup; } @@ -404,7 +404,7 @@ pdf_parse_cmap(pdf_cmap **cmapp, fz_stream *file) error = pdf_parse_cmap_name(cmap, file); if (error) { - error = fz_rethrow(error, "syntaxerror in cmap after CMapName"); + error = fz_error_note(error, "syntaxerror in cmap after CMapName"); goto cleanup; } } @@ -413,7 +413,7 @@ pdf_parse_cmap(pdf_cmap **cmapp, fz_stream *file) error = pdf_parse_wmode(cmap, file); if (error) { - error = fz_rethrow(error, "syntaxerror in cmap after WMode"); + error = fz_error_note(error, "syntaxerror in cmap after WMode"); goto cleanup; } } @@ -431,7 +431,7 @@ pdf_parse_cmap(pdf_cmap **cmapp, fz_stream *file) error = pdf_parse_codespace_range(cmap, file); if (error) { - error = fz_rethrow(error, "syntaxerror in cmap codespacerange"); + error = fz_error_note(error, "syntaxerror in cmap codespacerange"); goto cleanup; } } @@ -441,7 +441,7 @@ pdf_parse_cmap(pdf_cmap **cmapp, fz_stream *file) error = pdf_parse_bf_char(cmap, file); if (error) { - error = fz_rethrow(error, "syntaxerror in cmap bfchar"); + error = fz_error_note(error, "syntaxerror in cmap bfchar"); goto cleanup; } } @@ -451,7 +451,7 @@ pdf_parse_cmap(pdf_cmap **cmapp, fz_stream *file) error = pdf_parse_cid_char(cmap, file); if (error) { - error = fz_rethrow(error, "syntaxerror in cmap cidchar"); + error = fz_error_note(error, "syntaxerror in cmap cidchar"); goto cleanup; } } @@ -461,7 +461,7 @@ pdf_parse_cmap(pdf_cmap **cmapp, fz_stream *file) error = pdf_parse_bf_range(cmap, file); if (error) { - error = fz_rethrow(error, "syntaxerror in cmap bfrange"); + error = fz_error_note(error, "syntaxerror in cmap bfrange"); goto cleanup; } } @@ -471,7 +471,7 @@ pdf_parse_cmap(pdf_cmap **cmapp, fz_stream *file) error = pdf_parse_cid_range(cmap, file); if (error) { - error = fz_rethrow(error, "syntaxerror in cmap cidrange"); + error = fz_error_note(error, "syntaxerror in cmap cidrange"); goto cleanup; } } diff --git a/pdf/pdf_colorspace.c b/pdf/pdf_colorspace.c index b7ea51a3..2fe5bccd 100644 --- a/pdf/pdf_colorspace.c +++ b/pdf/pdf_colorspace.c @@ -17,7 +17,7 @@ load_icc_based(fz_colorspace **csp, pdf_xref *xref, fz_obj *dict) case 4: *csp = fz_device_cmyk; return fz_okay; } - return fz_throw("syntaxerror: ICCBased must have 1, 3 or 4 components"); + return fz_error_make("syntaxerror: ICCBased must have 1, 3 or 4 components"); } /* Lab */ @@ -108,17 +108,17 @@ load_separation(fz_colorspace **csp, pdf_xref *xref, fz_obj *array) n = 1; if (n > FZ_MAX_COLORS) - return fz_throw("too many components in colorspace"); + return fz_error_make("too many components in colorspace"); error = pdf_load_colorspace(&base, xref, baseobj); if (error) - return fz_rethrow(error, "cannot load base colorspace (%d %d R)", fz_to_num(baseobj), fz_to_gen(baseobj)); + return fz_error_note(error, "cannot load base colorspace (%d %d R)", fz_to_num(baseobj), fz_to_gen(baseobj)); error = pdf_load_function(&tint, xref, tintobj); if (error) { fz_drop_colorspace(base); - return fz_rethrow(error, "cannot load tint function (%d %d R)", fz_to_num(tintobj), fz_to_gen(tintobj)); + return fz_error_note(error, "cannot load tint function (%d %d R)", fz_to_num(tintobj), fz_to_gen(tintobj)); } sep = fz_malloc(sizeof(struct separation)); @@ -221,7 +221,7 @@ load_indexed(fz_colorspace **csp, pdf_xref *xref, fz_obj *array) error = pdf_load_colorspace(&base, xref, baseobj); if (error) - return fz_rethrow(error, "cannot load base colorspace (%d %d R)", fz_to_num(baseobj), fz_to_gen(baseobj)); + return fz_error_note(error, "cannot load base colorspace (%d %d R)", fz_to_num(baseobj), fz_to_gen(baseobj)); idx = fz_malloc(sizeof(struct indexed)); idx->base = base; @@ -250,14 +250,14 @@ load_indexed(fz_colorspace **csp, pdf_xref *xref, fz_obj *array) if (error) { fz_drop_colorspace(cs); - return fz_rethrow(error, "cannot open colorspace lookup table (%d 0 R)", fz_to_num(lookup)); + return fz_error_note(error, "cannot open colorspace lookup table (%d 0 R)", fz_to_num(lookup)); } i = fz_read(file, idx->lookup, n); if (i < 0) { fz_drop_colorspace(cs); - return fz_throw("cannot read colorspace lookup table (%d 0 R)", fz_to_num(lookup)); + return fz_error_make("cannot read colorspace lookup table (%d 0 R)", fz_to_num(lookup)); } fz_close(file); @@ -265,7 +265,7 @@ load_indexed(fz_colorspace **csp, pdf_xref *xref, fz_obj *array) else { fz_drop_colorspace(cs); - return fz_throw("cannot parse colorspace lookup table"); + return fz_error_make("cannot parse colorspace lookup table"); } *csp = cs; @@ -294,7 +294,7 @@ pdf_load_colorspace_imp(fz_colorspace **csp, pdf_xref *xref, fz_obj *obj) else if (!strcmp(fz_to_name(obj), "DeviceCMYK")) *csp = fz_device_cmyk; else - return fz_throw("unknown colorspace: %s", fz_to_name(obj)); + return fz_error_make("unknown colorspace: %s", fz_to_name(obj)); return fz_okay; } @@ -318,7 +318,7 @@ pdf_load_colorspace_imp(fz_colorspace **csp, pdf_xref *xref, fz_obj *obj) error = pdf_load_colorspace(csp, xref, obj); if (error) - return fz_rethrow(error, "cannot load pattern (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot load pattern (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); } else if (!strcmp(fz_to_name(name), "G")) @@ -357,13 +357,13 @@ pdf_load_colorspace_imp(fz_colorspace **csp, pdf_xref *xref, fz_obj *obj) return load_separation(csp, xref, obj); else - return fz_throw("syntaxerror: unknown colorspace %s", fz_to_name(name)); + return fz_error_make("syntaxerror: unknown colorspace %s", fz_to_name(name)); return fz_okay; } } - return fz_throw("syntaxerror: could not parse color space (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_make("syntaxerror: could not parse color space (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); } fz_error @@ -379,7 +379,7 @@ pdf_load_colorspace(fz_colorspace **csp, pdf_xref *xref, fz_obj *obj) error = pdf_load_colorspace_imp(csp, xref, obj); if (error) - return fz_rethrow(error, "cannot load colorspace (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot load colorspace (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); pdf_store_item(xref->store, fz_keep_colorspace, fz_drop_colorspace, obj, *csp); diff --git a/pdf/pdf_crypt.c b/pdf/pdf_crypt.c index 4dd4c4e1..0bf52357 100644 --- a/pdf/pdf_crypt.c +++ b/pdf/pdf_crypt.c @@ -62,12 +62,12 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) if (!fz_is_name(obj)) { pdf_free_crypt(crypt); - return fz_throw("unspecified encryption handler"); + return fz_error_make("unspecified encryption handler"); } if (strcmp(fz_to_name(obj), "Standard") != 0) { pdf_free_crypt(crypt); - return fz_throw("unknown encryption handler: '%s'", fz_to_name(obj)); + return fz_error_make("unknown encryption handler: '%s'", fz_to_name(obj)); } crypt->v = 0; @@ -77,7 +77,7 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) if (crypt->v != 1 && crypt->v != 2 && crypt->v != 4 && crypt->v != 5) { pdf_free_crypt(crypt); - return fz_throw("unknown encryption version"); + return fz_error_make("unknown encryption version"); } crypt->length = 40; @@ -94,12 +94,12 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) if (crypt->length % 8 != 0) { pdf_free_crypt(crypt); - return fz_throw("invalid encryption key length"); + return fz_error_make("invalid encryption key length"); } if (crypt->length > 256) { pdf_free_crypt(crypt); - return fz_throw("invalid encryption key length"); + return fz_error_make("invalid encryption key length"); } } @@ -140,7 +140,7 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) if (error) { pdf_free_crypt(crypt); - return fz_rethrow(error, "cannot parse stream crypt filter (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot parse stream crypt filter (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); } } @@ -151,7 +151,7 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) if (error) { pdf_free_crypt(crypt); - return fz_rethrow(error, "cannot parse string crypt filter (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot parse string crypt filter (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); } } @@ -168,7 +168,7 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) else { pdf_free_crypt(crypt); - return fz_throw("encryption dictionary missing revision value"); + return fz_error_make("encryption dictionary missing revision value"); } obj = fz_dict_gets(dict, "O"); @@ -180,7 +180,7 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) else { pdf_free_crypt(crypt); - return fz_throw("encryption dictionary missing owner password"); + return fz_error_make("encryption dictionary missing owner password"); } obj = fz_dict_gets(dict, "U"); @@ -196,7 +196,7 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) else { pdf_free_crypt(crypt); - return fz_throw("encryption dictionary missing user password"); + return fz_error_make("encryption dictionary missing user password"); } obj = fz_dict_gets(dict, "P"); @@ -205,7 +205,7 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) else { pdf_free_crypt(crypt); - return fz_throw("encryption dictionary missing permissions value"); + return fz_error_make("encryption dictionary missing permissions value"); } if (crypt->r == 5) @@ -214,7 +214,7 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) if (!fz_is_string(obj) || fz_to_str_len(obj) != 32) { pdf_free_crypt(crypt); - return fz_throw("encryption dictionary missing owner encryption key"); + return fz_error_make("encryption dictionary missing owner encryption key"); } memcpy(crypt->oe, fz_to_str_buf(obj), 32); @@ -222,7 +222,7 @@ pdf_new_crypt(pdf_crypt **cryptp, fz_obj *dict, fz_obj *id) if (!fz_is_string(obj) || fz_to_str_len(obj) != 32) { pdf_free_crypt(crypt); - return fz_throw("encryption dictionary missing user encryption key"); + return fz_error_make("encryption dictionary missing user encryption key"); } memcpy(crypt->ue, fz_to_str_buf(obj), 32); } @@ -269,7 +269,7 @@ pdf_parse_crypt_filter(pdf_crypt_filter *cf, fz_obj *cf_obj, char *name, int def if (!is_identity && !is_stdcf) { - return fz_throw("Crypt Filter not Identity or StdCF (%d %d R)", fz_to_num(cf_obj), fz_to_gen(cf_obj)); + return fz_error_make("Crypt Filter not Identity or StdCF (%d %d R)", fz_to_num(cf_obj), fz_to_gen(cf_obj)); } cf->method = PDF_CRYPT_NONE; cf->length = defaultlength; @@ -283,7 +283,7 @@ pdf_parse_crypt_filter(pdf_crypt_filter *cf, fz_obj *cf_obj, char *name, int def dict = fz_dict_gets(cf_obj, name); if (!fz_is_dict(dict)) { - return fz_throw("cannot parse crypt filter (%d %d R)", fz_to_num(cf_obj), fz_to_gen(cf_obj)); + return fz_error_make("cannot parse crypt filter (%d %d R)", fz_to_num(cf_obj), fz_to_gen(cf_obj)); } obj = fz_dict_gets(dict, "CFM"); if (fz_is_name(obj)) @@ -297,7 +297,7 @@ pdf_parse_crypt_filter(pdf_crypt_filter *cf, fz_obj *cf_obj, char *name, int def else if (!strcmp(fz_to_name(obj), "AESV3")) cf->method = PDF_CRYPT_AESV3; else - fz_throw("unknown encryption method: %s", fz_to_name(obj)); + fz_error_make("unknown encryption method: %s", fz_to_name(obj)); } obj = fz_dict_gets(dict, "Length"); @@ -309,7 +309,7 @@ pdf_parse_crypt_filter(pdf_crypt_filter *cf, fz_obj *cf_obj, char *name, int def cf->length = cf->length * 8; if ((cf->length % 8) != 0) - return fz_throw("invalid key length: %d", cf->length); + return fz_error_make("invalid key length: %d", cf->length); return fz_okay; } @@ -815,7 +815,7 @@ pdf_open_crypt_with_filter(fz_stream *chain, pdf_crypt *crypt, char *name, int n { error = pdf_parse_crypt_filter(&cf, crypt->cf, name, crypt->length); if (error) - fz_catch(error, "cannot parse crypt filter (%d %d R)", num, gen); + fz_error_handle(error, "cannot parse crypt filter (%d %d R)", num, gen); else return pdf_open_crypt_imp(chain, crypt, &cf, num, gen); } diff --git a/pdf/pdf_font.c b/pdf/pdf_font.c index e7da43c0..0e4b2229 100644 --- a/pdf/pdf_font.c +++ b/pdf/pdf_font.c @@ -179,11 +179,11 @@ pdf_load_builtin_font(pdf_font_desc *fontdesc, char *fontname) data = pdf_find_builtin_font(fontname, &len); if (!data) - return fz_throw("cannot find builtin font: '%s'", fontname); + return fz_error_make("cannot find builtin font: '%s'", fontname); error = fz_new_font_from_memory(&fontdesc->font, data, len, 0); if (error) - return fz_rethrow(error, "cannot load freetype font from memory"); + return fz_error_note(error, "cannot load freetype font from memory"); if (!strcmp(fontname, "Symbol") || !strcmp(fontname, "ZapfDingbats")) fontdesc->flags |= PDF_FD_SYMBOLIC; @@ -200,11 +200,11 @@ pdf_load_substitute_font(pdf_font_desc *fontdesc, int mono, int serif, int bold, data = pdf_find_substitute_font(mono, serif, bold, italic, &len); if (!data) - return fz_throw("cannot find substitute font"); + return fz_error_make("cannot find substitute font"); error = fz_new_font_from_memory(&fontdesc->font, data, len, 0); if (error) - return fz_rethrow(error, "cannot load freetype font from memory"); + return fz_error_note(error, "cannot load freetype font from memory"); fontdesc->font->ft_substitute = 1; fontdesc->font->ft_bold = bold && !ft_is_bold(fontdesc->font->ft_face); @@ -221,11 +221,11 @@ pdf_load_substitute_cjk_font(pdf_font_desc *fontdesc, int ros, int serif) data = pdf_find_substitute_cjk_font(ros, serif, &len); if (!data) - return fz_throw("cannot find builtin CJK font"); + return fz_error_make("cannot find builtin CJK font"); error = fz_new_font_from_memory(&fontdesc->font, data, len, 0); if (error) - return fz_rethrow(error, "cannot load builtin CJK font"); + return fz_error_note(error, "cannot load builtin CJK font"); fontdesc->font->ft_substitute = 1; return fz_okay; @@ -266,12 +266,12 @@ pdf_load_system_font(pdf_font_desc *fontdesc, char *fontname, char *collection) return pdf_load_substitute_cjk_font(fontdesc, PDF_ROS_JAPAN, serif); else if (!strcmp(collection, "Adobe-Korea1")) return pdf_load_substitute_cjk_font(fontdesc, PDF_ROS_KOREA, serif); - return fz_throw("unknown cid collection: %s", collection); + return fz_error_make("unknown cid collection: %s", collection); } error = pdf_load_substitute_font(fontdesc, mono, serif, bold, italic); if (error) - return fz_rethrow(error, "cannot load substitute font"); + return fz_error_note(error, "cannot load substitute font"); return fz_okay; } @@ -284,13 +284,13 @@ pdf_load_embedded_font(pdf_font_desc *fontdesc, pdf_xref *xref, fz_obj *stmref) error = pdf_load_stream(&buf, xref, fz_to_num(stmref), fz_to_gen(stmref)); if (error) - return fz_rethrow(error, "cannot load font stream (%d %d R)", fz_to_num(stmref), fz_to_gen(stmref)); + return fz_error_note(error, "cannot load font stream (%d %d R)", fz_to_num(stmref), fz_to_gen(stmref)); error = fz_new_font_from_memory(&fontdesc->font, buf->data, buf->len, 0); if (error) { fz_drop_buffer(buf); - return fz_rethrow(error, "cannot load embedded font (%d %d R)", fz_to_num(stmref), fz_to_gen(stmref)); + return fz_error_note(error, "cannot load embedded font (%d %d R)", fz_to_num(stmref), fz_to_gen(stmref)); } /* save the buffer so we can free it later */ @@ -454,7 +454,7 @@ pdf_load_simple_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict) error |= pdf_load_system_cmap(&fontdesc->to_unicode, "Adobe-GB1-UCS2"); error |= pdf_load_system_cmap(&fontdesc->to_ttf_cmap, "Adobe-GB1-UCS2"); if (error) - return fz_rethrow(error, "cannot load font"); + return fz_error_note(error, "cannot load font"); face = fontdesc->font->ft_face; kind = ft_kind(face); @@ -648,7 +648,7 @@ pdf_load_simple_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict) error = pdf_load_to_unicode(fontdesc, xref, estrings, NULL, fz_dict_gets(dict, "ToUnicode")); if (error) - fz_catch(error, "cannot load to_unicode"); + fz_error_handle(error, "cannot load to_unicode"); skip_encoding: @@ -693,7 +693,7 @@ cleanup: if (etable != fontdesc->cid_to_gid) fz_free(etable); pdf_drop_font(fontdesc); - return fz_rethrow(error, "cannot load simple font (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load simple font (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } /* @@ -726,7 +726,7 @@ load_cid_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict, fz_obj *e cidinfo = fz_dict_gets(dict, "CIDSystemInfo"); if (!cidinfo) - return fz_throw("cid font is missing info"); + return fz_error_make("cid font is missing info"); obj = fz_dict_gets(cidinfo, "Registry"); tmplen = MIN(sizeof tmpstr - 1, fz_to_str_len(obj)); @@ -751,7 +751,7 @@ load_cid_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict, fz_obj *e if (descriptor) error = pdf_load_font_descriptor(fontdesc, xref, descriptor, collection, basefont); else - error = fz_throw("syntaxerror: missing font descriptor"); + error = fz_error_make("syntaxerror: missing font descriptor"); if (error) goto cleanup; @@ -776,7 +776,7 @@ load_cid_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict, fz_obj *e } else { - error = fz_throw("syntaxerror: font missing encoding"); + error = fz_error_make("syntaxerror: font missing encoding"); } if (error) goto cleanup; @@ -812,7 +812,7 @@ load_cid_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict, fz_obj *e fterr = FT_Select_Charmap(face, ft_encoding_unicode); if (fterr) { - error = fz_throw("fonterror: no unicode cmap when emulating CID font: %s", ft_error_string(fterr)); + error = fz_error_make("fonterror: no unicode cmap when emulating CID font: %s", ft_error_string(fterr)); goto cleanup; } @@ -831,7 +831,7 @@ load_cid_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict, fz_obj *e if (error) { - error = fz_rethrow(error, "cannot load system cmap %s", collection); + error = fz_error_note(error, "cannot load system cmap %s", collection); goto cleanup; } } @@ -839,7 +839,7 @@ load_cid_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict, fz_obj *e error = pdf_load_to_unicode(fontdesc, xref, NULL, collection, to_unicode); if (error) - fz_catch(error, "cannot load to_unicode"); + fz_error_handle(error, "cannot load to_unicode"); /* Horizontal */ @@ -935,7 +935,7 @@ load_cid_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict, fz_obj *e cleanup: pdf_drop_font(fontdesc); - return fz_rethrow(error, "cannot load cid font (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load cid font (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } static fz_error @@ -950,7 +950,7 @@ pdf_load_type0_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict) dfonts = fz_dict_gets(dict, "DescendantFonts"); if (!dfonts) - return fz_throw("cid font is missing descendant fonts"); + return fz_error_make("cid font is missing descendant fonts"); dfont = fz_array_get(dfonts, 0); @@ -963,9 +963,9 @@ pdf_load_type0_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *dict) else if (fz_is_name(subtype) && !strcmp(fz_to_name(subtype), "CIDFontType2")) error = load_cid_font(fontdescp, xref, dfont, encoding, to_unicode); else - error = fz_throw("syntaxerror: unknown cid font type"); + error = fz_error_make("syntaxerror: unknown cid font type"); if (error) - return fz_rethrow(error, "cannot load descendant font (%d %d R)", fz_to_num(dfont), fz_to_gen(dfont)); + return fz_error_note(error, "cannot load descendant font (%d %d R)", fz_to_num(dfont), fz_to_gen(dfont)); return fz_okay; } @@ -1007,13 +1007,13 @@ pdf_load_font_descriptor(pdf_font_desc *fontdesc, pdf_xref *xref, fz_obj *dict, error = pdf_load_embedded_font(fontdesc, xref, obj); if (error) { - fz_catch(error, "ignored error when loading embedded font, attempting to load system font"); + fz_error_handle(error, "ignored error when loading embedded font, attempting to load system font"); if (origname != fontname) error = pdf_load_builtin_font(fontdesc, fontname); else error = pdf_load_system_font(fontdesc, fontname, collection); if (error) - return fz_rethrow(error, "cannot load font descriptor (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load font descriptor (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } } else @@ -1023,7 +1023,7 @@ pdf_load_font_descriptor(pdf_font_desc *fontdesc, pdf_xref *xref, fz_obj *dict, else error = pdf_load_system_font(fontdesc, fontname, collection); if (error) - return fz_rethrow(error, "cannot load font descriptor (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load font descriptor (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } fz_strlcpy(fontdesc->font->name, fontname, sizeof fontdesc->font->name); @@ -1118,7 +1118,7 @@ pdf_load_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *rdb, fz_obj *di error = pdf_load_simple_font(fontdescp, xref, dict); } if (error) - return fz_rethrow(error, "cannot load font (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load font (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); /* Save the widths to stretch non-CJK substitute fonts */ if ((*fontdescp)->font->ft_substitute && !(*fontdescp)->to_ttf_cmap) diff --git a/pdf/pdf_function.c b/pdf/pdf_function.c index c1132365..7eeb7863 100644 --- a/pdf/pdf_function.c +++ b/pdf/pdf_function.c @@ -697,12 +697,12 @@ parse_code(pdf_function *func, fz_stream *stream, int *codeptr) { error = pdf_lex(&tok, stream, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "calculator function lexical error"); + return fz_error_note(error, "calculator function lexical error"); switch(tok) { case PDF_TOK_EOF: - return fz_throw("truncated calculator function"); + return fz_error_make("truncated calculator function"); case PDF_TOK_INT: resize_code(func, *codeptr); @@ -727,22 +727,22 @@ parse_code(pdf_function *func, fz_stream *stream, int *codeptr) ifptr = *codeptr; error = parse_code(func, stream, codeptr); if (error) - return fz_rethrow(error, "error in 'if' branch"); + return fz_error_note(error, "error in 'if' branch"); error = pdf_lex(&tok, stream, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "calculator function syntax error"); + return fz_error_note(error, "calculator function syntax error"); if (tok == PDF_TOK_OPEN_BRACE) { elseptr = *codeptr; error = parse_code(func, stream, codeptr); if (error) - return fz_rethrow(error, "error in 'else' branch"); + return fz_error_note(error, "error in 'else' branch"); error = pdf_lex(&tok, stream, buf, sizeof buf, &len); if (error) - return fz_rethrow(error, "calculator function syntax error"); + return fz_error_note(error, "calculator function syntax error"); } else { @@ -754,7 +754,7 @@ parse_code(pdf_function *func, fz_stream *stream, int *codeptr) if (!strcmp(buf, "if")) { if (elseptr >= 0) - return fz_throw("too many branches for 'if'"); + return fz_error_make("too many branches for 'if'"); func->u.p.code[opptr].type = PS_OPERATOR; func->u.p.code[opptr].u.op = PS_OP_IF; func->u.p.code[opptr+2].type = PS_BLOCK; @@ -765,7 +765,7 @@ parse_code(pdf_function *func, fz_stream *stream, int *codeptr) else if (!strcmp(buf, "ifelse")) { if (elseptr < 0) - return fz_throw("not enough branches for 'ifelse'"); + return fz_error_make("not enough branches for 'ifelse'"); func->u.p.code[opptr].type = PS_OPERATOR; func->u.p.code[opptr].u.op = PS_OP_IFELSE; func->u.p.code[opptr+1].type = PS_BLOCK; @@ -777,12 +777,12 @@ parse_code(pdf_function *func, fz_stream *stream, int *codeptr) } else { - return fz_throw("unknown keyword in 'if-else' context: '%s'", buf); + return fz_error_make("unknown keyword in 'if-else' context: '%s'", buf); } } else { - return fz_throw("missing keyword in 'if-else' context"); + return fz_error_make("missing keyword in 'if-else' context"); } break; @@ -809,7 +809,7 @@ parse_code(pdf_function *func, fz_stream *stream, int *codeptr) a = b = mid; } if (cmp != 0) - return fz_throw("unknown operator: '%s'", buf); + return fz_error_make("unknown operator: '%s'", buf); resize_code(func, *codeptr); func->u.p.code[*codeptr].type = PS_OPERATOR; @@ -818,7 +818,7 @@ parse_code(pdf_function *func, fz_stream *stream, int *codeptr) break; default: - return fz_throw("calculator function syntax error"); + return fz_error_make("calculator function syntax error"); } } } @@ -835,19 +835,19 @@ load_postscript_func(pdf_function *func, pdf_xref *xref, fz_obj *dict, int num, error = pdf_open_stream(&stream, xref, num, gen); if (error) - return fz_rethrow(error, "cannot open calculator function stream"); + return fz_error_note(error, "cannot open calculator function stream"); error = pdf_lex(&tok, stream, buf, sizeof buf, &len); if (error) { fz_close(stream); - return fz_rethrow(error, "stream is not a calculator function"); + return fz_error_note(error, "stream is not a calculator function"); } if (tok != PDF_TOK_OPEN_BRACE) { fz_close(stream); - return fz_throw("stream is not a calculator function"); + return fz_error_make("stream is not a calculator function"); } func->u.p.code = NULL; @@ -858,7 +858,7 @@ load_postscript_func(pdf_function *func, pdf_xref *xref, fz_obj *dict, int num, if (error) { fz_close(stream); - return fz_rethrow(error, "cannot parse calculator function (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse calculator function (%d %d R)", num, gen); } fz_close(stream); @@ -907,20 +907,20 @@ load_sample_func(pdf_function *func, pdf_xref *xref, fz_obj *dict, int num, int obj = fz_dict_gets(dict, "Size"); if (!fz_is_array(obj) || fz_array_len(obj) != func->m) - return fz_throw("malformed /Size"); + return fz_error_make("malformed /Size"); for (i = 0; i < func->m; i++) func->u.sa.size[i] = fz_to_int(fz_array_get(obj, i)); obj = fz_dict_gets(dict, "BitsPerSample"); if (!fz_is_int(obj)) - return fz_throw("malformed /BitsPerSample"); + return fz_error_make("malformed /BitsPerSample"); func->u.sa.bps = bps = fz_to_int(obj); obj = fz_dict_gets(dict, "Encode"); if (fz_is_array(obj)) { if (fz_array_len(obj) != func->m * 2) - return fz_throw("malformed /Encode"); + return fz_error_make("malformed /Encode"); for (i = 0; i < func->m; i++) { func->u.sa.encode[i][0] = fz_to_real(fz_array_get(obj, i*2+0)); @@ -940,7 +940,7 @@ load_sample_func(pdf_function *func, pdf_xref *xref, fz_obj *dict, int num, int if (fz_is_array(obj)) { if (fz_array_len(obj) != func->n * 2) - return fz_throw("malformed /Decode"); + return fz_error_make("malformed /Decode"); for (i = 0; i < func->n; i++) { func->u.sa.decode[i][0] = fz_to_real(fz_array_get(obj, i*2+0)); @@ -963,7 +963,7 @@ load_sample_func(pdf_function *func, pdf_xref *xref, fz_obj *dict, int num, int error = pdf_open_stream(&stream, xref, num, gen); if (error) - return fz_rethrow(error, "cannot open samples stream (%d %d R)", num, gen); + return fz_error_note(error, "cannot open samples stream (%d %d R)", num, gen); /* read samples */ for (i = 0; i < samplecount; i++) @@ -974,7 +974,7 @@ load_sample_func(pdf_function *func, pdf_xref *xref, fz_obj *dict, int num, int if (fz_is_eof_bits(stream)) { fz_close(stream); - return fz_throw("truncated sample stream"); + return fz_error_make("truncated sample stream"); } switch (bps) @@ -1004,7 +1004,7 @@ load_sample_func(pdf_function *func, pdf_xref *xref, fz_obj *dict, int num, int break; default: fz_close(stream); - return fz_throw("sample stream bit depth %d unsupported", bps); + return fz_error_make("sample stream bit depth %d unsupported", bps); } func->u.sa.samples[i] = s; @@ -1113,11 +1113,11 @@ load_exponential_func(pdf_function *func, fz_obj *dict) int i; if (func->m != 1) - return fz_throw("/Domain must be one dimension (%d)", func->m); + return fz_error_make("/Domain must be one dimension (%d)", func->m); obj = fz_dict_gets(dict, "N"); if (!fz_is_int(obj) && !fz_is_real(obj)) - return fz_throw("malformed /N"); + return fz_error_make("malformed /N"); func->u.e.n = fz_to_real(obj); obj = fz_dict_gets(dict, "C0"); @@ -1125,7 +1125,7 @@ load_exponential_func(pdf_function *func, fz_obj *dict) { func->n = fz_array_len(obj); if (func->n >= MAXN) - return fz_throw("exponential function result array out of range"); + return fz_error_make("exponential function result array out of range"); for (i = 0; i < func->n; i++) func->u.e.c0[i] = fz_to_real(fz_array_get(obj, i)); } @@ -1139,14 +1139,14 @@ load_exponential_func(pdf_function *func, fz_obj *dict) if (fz_is_array(obj)) { if (fz_array_len(obj) != func->n) - return fz_throw("/C1 must match /C0 length"); + return fz_error_make("/C1 must match /C0 length"); for (i = 0; i < func->n; i++) func->u.e.c1[i] = fz_to_real(fz_array_get(obj, i)); } else { if (func->n != 1) - return fz_throw("/C1 must match /C0 length"); + return fz_error_make("/C1 must match /C0 length"); func->u.e.c1[0] = 1; } @@ -1196,11 +1196,11 @@ load_stitching_func(pdf_function *func, pdf_xref *xref, fz_obj *dict) func->u.st.k = 0; if (func->m != 1) - return fz_throw("/Domain must be one dimension (%d)", func->m); + return fz_error_make("/Domain must be one dimension (%d)", func->m); obj = fz_dict_gets(dict, "Functions"); if (!fz_is_array(obj)) - return fz_throw("stitching function has no input functions"); + return fz_error_make("stitching function has no input functions"); { k = fz_array_len(obj); @@ -1214,33 +1214,33 @@ load_stitching_func(pdf_function *func, pdf_xref *xref, fz_obj *dict) sub = fz_array_get(obj, i); error = pdf_load_function(&funcs[i], xref, sub); if (error) - return fz_rethrow(error, "cannot load sub function %d (%d %d R)", i, fz_to_num(sub), fz_to_gen(sub)); + return fz_error_note(error, "cannot load sub function %d (%d %d R)", i, fz_to_num(sub), fz_to_gen(sub)); if (funcs[i]->m != 1 || funcs[i]->n != funcs[0]->n) - return fz_throw("sub function %d /Domain or /Range mismatch", i); + return fz_error_make("sub function %d /Domain or /Range mismatch", i); func->u.st.k ++; } if (!func->n) func->n = funcs[0]->n; else if (func->n != funcs[0]->n) - return fz_throw("sub function /Domain or /Range mismatch"); + return fz_error_make("sub function /Domain or /Range mismatch"); } obj = fz_dict_gets(dict, "Bounds"); if (!fz_is_array(obj)) - return fz_throw("stitching function has no bounds"); + return fz_error_make("stitching function has no bounds"); { if (!fz_is_array(obj) || fz_array_len(obj) != k - 1) - return fz_throw("malformed /Bounds (not array or wrong length)"); + return fz_error_make("malformed /Bounds (not array or wrong length)"); for (i = 0; i < k-1; i++) { num = fz_array_get(obj, i); if (!fz_is_int(num) && !fz_is_real(num)) - return fz_throw("malformed /Bounds (item not real)"); + return fz_error_make("malformed /Bounds (item not real)"); func->u.st.bounds[i] = fz_to_real(num); if (i && func->u.st.bounds[i-1] > func->u.st.bounds[i]) - return fz_throw("malformed /Bounds (item not monotonic)"); + return fz_error_make("malformed /Bounds (item not monotonic)"); } if (k != 1 && (func->domain[0][0] > func->u.st.bounds[0] || @@ -1250,10 +1250,10 @@ load_stitching_func(pdf_function *func, pdf_xref *xref, fz_obj *dict) obj = fz_dict_gets(dict, "Encode"); if (!fz_is_array(obj)) - return fz_throw("stitching function is missing encoding"); + return fz_error_make("stitching function is missing encoding"); { if (!fz_is_array(obj) || fz_array_len(obj) != k * 2) - return fz_throw("malformed /Encode"); + return fz_error_make("malformed /Encode"); for (i = 0; i < k; i++) { func->u.st.encode[i*2+0] = fz_to_real(fz_array_get(obj, i*2+0)); @@ -1396,7 +1396,7 @@ pdf_load_function(pdf_function **funcp, pdf_xref *xref, fz_obj *dict) if (func->m >= MAXM || func->n >= MAXN) { fz_free(func); - return fz_throw("assert: /Domain or /Range too big"); + return fz_error_make("assert: /Domain or /Range too big"); } switch(func->type) @@ -1406,7 +1406,7 @@ pdf_load_function(pdf_function **funcp, pdf_xref *xref, fz_obj *dict) if (error) { pdf_drop_function(func); - return fz_rethrow(error, "cannot load sampled function (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load sampled function (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } break; @@ -1415,7 +1415,7 @@ pdf_load_function(pdf_function **funcp, pdf_xref *xref, fz_obj *dict) if (error) { pdf_drop_function(func); - return fz_rethrow(error, "cannot load exponential function (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load exponential function (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } break; @@ -1424,7 +1424,7 @@ pdf_load_function(pdf_function **funcp, pdf_xref *xref, fz_obj *dict) if (error) { pdf_drop_function(func); - return fz_rethrow(error, "cannot load stitching function (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load stitching function (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } break; @@ -1433,13 +1433,13 @@ pdf_load_function(pdf_function **funcp, pdf_xref *xref, fz_obj *dict) if (error) { pdf_drop_function(func); - return fz_rethrow(error, "cannot load calculator function (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load calculator function (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } break; default: fz_free(func); - return fz_throw("unknown function type (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_make("unknown function type (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } pdf_store_item(xref->store, pdf_keep_function, pdf_drop_function, dict, func); diff --git a/pdf/pdf_image.c b/pdf/pdf_image.c index e1901100..413efc98 100644 --- a/pdf/pdf_image.c +++ b/pdf/pdf_image.c @@ -53,13 +53,13 @@ pdf_load_image_imp(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, tile = NULL; error = pdf_load_jpx_image(&tile, xref, dict); if (error) - return fz_rethrow(error, "cannot load jpx image"); + return fz_error_note(error, "cannot load jpx image"); if (forcemask) { if (tile->n != 2) { fz_drop_pixmap(tile); - return fz_throw("softmask must be grayscale"); + return fz_error_make("softmask must be grayscale"); } mask = fz_alpha_from_gray(tile, 1); fz_drop_pixmap(tile); @@ -85,17 +85,17 @@ pdf_load_image_imp(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, bpc = 1; if (w == 0) - return fz_throw("image width is zero"); + return fz_error_make("image width is zero"); if (h == 0) - return fz_throw("image height is zero"); + return fz_error_make("image height is zero"); if (bpc == 0) - return fz_throw("image depth is zero"); + return fz_error_make("image depth is zero"); if (bpc > 16) - return fz_throw("image depth is too large: %d", bpc); + return fz_error_make("image depth is too large: %d", bpc); if (w > (1 << 16)) - return fz_throw("image is too wide"); + return fz_error_make("image is too wide"); if (h > (1 << 16)) - return fz_throw("image is too high"); + return fz_error_make("image is too high"); obj = fz_dict_getsa(dict, "ColorSpace", "CS"); if (obj && !imagemask && !forcemask) @@ -110,7 +110,7 @@ pdf_load_image_imp(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, error = pdf_load_colorspace(&colorspace, xref, obj); if (error) - return fz_rethrow(error, "cannot load image colorspace"); + return fz_error_note(error, "cannot load image colorspace"); if (!strcmp(colorspace->name, "Indexed")) indexed = 1; @@ -146,7 +146,7 @@ pdf_load_image_imp(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, { if (colorspace) fz_drop_colorspace(colorspace); - return fz_rethrow(error, "cannot load image mask/softmask"); + return fz_error_note(error, "cannot load image mask/softmask"); } } } @@ -165,7 +165,7 @@ pdf_load_image_imp(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, fz_drop_colorspace(colorspace); if (mask) fz_drop_pixmap(mask); - return fz_throw("out of memory"); + return fz_error_make("out of memory"); } if (colorspace) @@ -186,7 +186,7 @@ pdf_load_image_imp(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, if (error) { fz_drop_pixmap(tile); - return fz_rethrow(error, "cannot open image data stream (%d 0 R)", fz_to_num(dict)); + return fz_error_note(error, "cannot open image data stream (%d 0 R)", fz_to_num(dict)); } } @@ -198,7 +198,7 @@ pdf_load_image_imp(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, fz_close(stm); fz_free(samples); fz_drop_pixmap(tile); - return fz_rethrow(len, "cannot read image data"); + return fz_error_note(len, "cannot read image data"); } /* Make sure we read the EOF marker (for inline images only) */ @@ -207,7 +207,7 @@ pdf_load_image_imp(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, unsigned char tbuf[512]; int tlen = fz_read(stm, tbuf, sizeof tbuf); if (tlen < 0) - fz_catch(tlen, "ignoring error at end of image"); + fz_error_handle(tlen, "ignoring error at end of image"); if (tlen > 0) fz_warn("ignoring garbage at end of image"); } @@ -262,7 +262,7 @@ pdf_load_inline_image(fz_pixmap **pixp, pdf_xref *xref, fz_obj *rdb, fz_obj *dic error = pdf_load_image_imp(pixp, xref, rdb, dict, file, 0); if (error) - return fz_rethrow(error, "cannot load inline image"); + return fz_error_note(error, "cannot load inline image"); return fz_okay; } @@ -295,14 +295,14 @@ pdf_load_jpx_image(fz_pixmap **imgp, pdf_xref *xref, fz_obj *dict) error = pdf_load_stream(&buf, xref, fz_to_num(dict), fz_to_gen(dict)); if (error) - return fz_rethrow(error, "cannot load jpx image data"); + return fz_error_note(error, "cannot load jpx image data"); obj = fz_dict_gets(dict, "ColorSpace"); if (obj) { error = pdf_load_colorspace(&colorspace, xref, obj); if (error) - fz_catch(error, "cannot load image colorspace"); + fz_error_handle(error, "cannot load image colorspace"); } error = fz_load_jpx_image(&img, buf->data, buf->len, colorspace); @@ -311,7 +311,7 @@ pdf_load_jpx_image(fz_pixmap **imgp, pdf_xref *xref, fz_obj *dict) if (colorspace) fz_drop_colorspace(colorspace); fz_drop_buffer(buf); - return fz_rethrow(error, "cannot load jpx image"); + return fz_error_note(error, "cannot load jpx image"); } if (colorspace) @@ -325,7 +325,7 @@ pdf_load_jpx_image(fz_pixmap **imgp, pdf_xref *xref, fz_obj *dict) if (error) { fz_drop_pixmap(img); - return fz_rethrow(error, "cannot load image mask/softmask"); + return fz_error_note(error, "cannot load image mask/softmask"); } } @@ -346,7 +346,7 @@ pdf_load_image(fz_pixmap **pixp, pdf_xref *xref, fz_obj *dict) error = pdf_load_image_imp(pixp, xref, NULL, dict, NULL, 0); if (error) - return fz_rethrow(error, "cannot load image (%d 0 R)", fz_to_num(dict)); + return fz_error_note(error, "cannot load image (%d 0 R)", fz_to_num(dict)); pdf_store_item(xref->store, fz_keep_pixmap, fz_drop_pixmap, dict, *pixp); diff --git a/pdf/pdf_interpret.c b/pdf/pdf_interpret.c index b49d9c11..77ff59d8 100644 --- a/pdf/pdf_interpret.c +++ b/pdf/pdf_interpret.c @@ -143,7 +143,7 @@ pdf_begin_group(pdf_csi *csi, fz_rect bbox) softmask->colorspace, gstate->softmask_bc); error = pdf_run_xobject(csi, NULL, softmask, fz_identity); if (error) - fz_catch(error, "cannot run softmask"); + fz_error_handle(error, "cannot run softmask"); fz_end_mask(csi->dev); gstate->softmask = softmask; @@ -984,7 +984,7 @@ pdf_show_pattern(pdf_csi *csi, pdf_pattern *pat, fz_rect area, int what) pdf_gsave(csi); error = pdf_run_buffer(csi, pat->resources, pat->contents); if (error) - fz_catch(error, "cannot render pattern tile"); + fz_error_handle(error, "cannot render pattern tile"); pdf_grestore(csi); while (oldtop < csi->gtop) pdf_grestore(csi); @@ -1006,7 +1006,7 @@ pdf_show_pattern(pdf_csi *csi, pdf_pattern *pat, fz_rect area, int what) pdf_grestore(csi); if (error) { - fz_catch(error, "cannot render pattern tile"); + fz_error_handle(error, "cannot render pattern tile"); goto cleanup; } } @@ -1053,7 +1053,7 @@ pdf_run_xobject(pdf_csi *csi, fz_obj *resources, pdf_xobject *xobj, fz_matrix tr softmask->colorspace, gstate->softmask_bc); error = pdf_run_xobject(csi, resources, softmask, fz_identity); if (error) - return fz_rethrow(error, "cannot run softmask"); + return fz_error_note(error, "cannot run softmask"); fz_end_mask(csi->dev); pdf_drop_xobject(softmask); @@ -1088,7 +1088,7 @@ pdf_run_xobject(pdf_csi *csi, fz_obj *resources, pdf_xobject *xobj, fz_matrix tr error = pdf_run_buffer(csi, resources, xobj->contents); if (error) - fz_catch(error, "cannot interpret XObject stream"); + fz_error_note(error, "cannot interpret XObject stream"); csi->top_ctm = oldtopctm; @@ -1139,13 +1139,13 @@ pdf_run_extgstate(pdf_csi *csi, fz_obj *rdb, fz_obj *extgstate) error = pdf_load_font(&gstate->font, csi->xref, rdb, font); if (error) - return fz_rethrow(error, "cannot load font (%d %d R)", fz_to_num(font), fz_to_gen(font)); + return fz_error_note(error, "cannot load font (%d %d R)", fz_to_num(font), fz_to_gen(font)); if (!gstate->font) - return fz_throw("cannot find font in store"); + return fz_error_make("cannot find font in store"); gstate->size = fz_to_real(fz_array_get(val, 1)); } else - return fz_throw("malformed /Font dictionary"); + return fz_error_make("malformed /Font dictionary"); } else if (!strcmp(s, "LC")) @@ -1172,7 +1172,7 @@ pdf_run_extgstate(pdf_csi *csi, fz_obj *rdb, fz_obj *extgstate) gstate->stroke_state.dash_phase = fz_to_real(fz_array_get(val, 1)); } else - return fz_throw("malformed /D"); + return fz_error_make("malformed /D"); } else if (!strcmp(s, "CA")) @@ -1204,10 +1204,10 @@ pdf_run_extgstate(pdf_csi *csi, fz_obj *rdb, fz_obj *extgstate) group = fz_dict_gets(val, "G"); if (!group) - return fz_throw("cannot load softmask xobject (%d %d R)", fz_to_num(val), fz_to_gen(val)); + return fz_error_make("cannot load softmask xobject (%d %d R)", fz_to_num(val), fz_to_gen(val)); error = pdf_load_xobject(&xobj, csi->xref, group); if (error) - return fz_rethrow(error, "cannot load xobject (%d %d R)", fz_to_num(val), fz_to_gen(val)); + return fz_error_note(error, "cannot load xobject (%d %d R)", fz_to_num(val), fz_to_gen(val)); colorspace = xobj->colorspace; if (!colorspace) @@ -1270,7 +1270,7 @@ static fz_error pdf_run_BI(pdf_csi *csi, fz_obj *rdb, fz_stream *file) error = pdf_parse_dict(&obj, csi->xref, file, buf, buflen); if (error) - return fz_rethrow(error, "cannot parse inline image dictionary"); + return fz_error_note(error, "cannot parse inline image dictionary"); /* read whitespace after ID keyword */ ch = fz_read_byte(file); @@ -1281,7 +1281,7 @@ static fz_error pdf_run_BI(pdf_csi *csi, fz_obj *rdb, fz_stream *file) error = pdf_load_inline_image(&img, csi->xref, rdb, obj, file); fz_drop_obj(obj); if (error) - return fz_rethrow(error, "cannot load inline image"); + return fz_error_note(error, "cannot load inline image"); pdf_show_image(csi, img); @@ -1293,7 +1293,7 @@ static fz_error pdf_run_BI(pdf_csi *csi, fz_obj *rdb, fz_stream *file) ch = fz_read_byte(file); ch = fz_read_byte(file); if (ch != 'I') - return fz_rethrow(error, "syntax error after inline image"); + return fz_error_note(error, "syntax error after inline image"); return fz_okay; } @@ -1346,13 +1346,13 @@ static fz_error pdf_run_cs_imp(pdf_csi *csi, fz_obj *rdb, int what) { dict = fz_dict_gets(rdb, "ColorSpace"); if (!dict) - return fz_throw("cannot find ColorSpace dictionary"); + return fz_error_make("cannot find ColorSpace dictionary"); obj = fz_dict_gets(dict, csi->name); if (!obj) - return fz_throw("cannot find colorspace resource '%s'", csi->name); + return fz_error_make("cannot find colorspace resource '%s'", csi->name); error = pdf_load_colorspace(&colorspace, csi->xref, obj); if (error) - return fz_rethrow(error, "cannot load colorspace (%d 0 R)", fz_to_num(obj)); + return fz_error_note(error, "cannot load colorspace (%d 0 R)", fz_to_num(obj)); } pdf_set_colorspace(csi, what, colorspace); @@ -1367,7 +1367,7 @@ static void pdf_run_CS(pdf_csi *csi, fz_obj *rdb) fz_error error; error = pdf_run_cs_imp(csi, rdb, PDF_STROKE); if (error) - fz_catch(error, "cannot set colorspace"); + fz_error_handle(error, "cannot set colorspace"); } static void pdf_run_cs(pdf_csi *csi, fz_obj *rdb) @@ -1375,7 +1375,7 @@ static void pdf_run_cs(pdf_csi *csi, fz_obj *rdb) fz_error error; error = pdf_run_cs_imp(csi, rdb, PDF_FILL); if (error) - fz_catch(error, "cannot set colorspace"); + fz_error_handle(error, "cannot set colorspace"); } static void pdf_run_DP(pdf_csi *csi) @@ -1391,15 +1391,15 @@ static fz_error pdf_run_Do(pdf_csi *csi, fz_obj *rdb) dict = fz_dict_gets(rdb, "XObject"); if (!dict) - return fz_throw("cannot find XObject dictionary when looking for: '%s'", csi->name); + return fz_error_make("cannot find XObject dictionary when looking for: '%s'", csi->name); obj = fz_dict_gets(dict, csi->name); if (!obj) - return fz_throw("cannot find xobject resource: '%s'", csi->name); + return fz_error_make("cannot find xobject resource: '%s'", csi->name); subtype = fz_dict_gets(obj, "Subtype"); if (!fz_is_name(subtype)) - return fz_throw("no XObject subtype specified"); + return fz_error_make("no XObject subtype specified"); if (pdf_is_hidden_ocg(obj, csi->target)) return fz_okay; @@ -1413,7 +1413,7 @@ static fz_error pdf_run_Do(pdf_csi *csi, fz_obj *rdb) error = pdf_load_xobject(&xobj, csi->xref, obj); if (error) - return fz_rethrow(error, "cannot load xobject (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot load xobject (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); /* Inherit parent resources, in case this one was empty XXX check where it's loaded */ if (!xobj->resources) @@ -1421,7 +1421,7 @@ static fz_error pdf_run_Do(pdf_csi *csi, fz_obj *rdb) error = pdf_run_xobject(csi, xobj->resources, xobj, fz_identity); if (error) - return fz_rethrow(error, "cannot draw xobject (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot draw xobject (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); pdf_drop_xobject(xobj); } @@ -1433,7 +1433,7 @@ static fz_error pdf_run_Do(pdf_csi *csi, fz_obj *rdb) fz_pixmap *img; error = pdf_load_image(&img, csi->xref, obj); if (error) - return fz_rethrow(error, "cannot load image (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot load image (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); pdf_show_image(csi, img); fz_drop_pixmap(img); } @@ -1446,7 +1446,7 @@ static fz_error pdf_run_Do(pdf_csi *csi, fz_obj *rdb) else { - return fz_throw("unknown XObject subtype: '%s'", fz_to_name(subtype)); + return fz_error_make("unknown XObject subtype: '%s'", fz_to_name(subtype)); } return fz_okay; @@ -1534,7 +1534,7 @@ static fz_error pdf_run_SC_imp(pdf_csi *csi, fz_obj *rdb, int what, pdf_material switch (kind) { case PDF_MAT_NONE: - return fz_throw("cannot set color in mask objects"); + return fz_error_make("cannot set color in mask objects"); case PDF_MAT_COLOR: pdf_set_color(csi, what, csi->stack); @@ -1543,11 +1543,11 @@ static fz_error pdf_run_SC_imp(pdf_csi *csi, fz_obj *rdb, int what, pdf_material case PDF_MAT_PATTERN: dict = fz_dict_gets(rdb, "Pattern"); if (!dict) - return fz_throw("cannot find Pattern dictionary"); + return fz_error_make("cannot find Pattern dictionary"); obj = fz_dict_gets(dict, csi->name); if (!obj) - return fz_throw("cannot find pattern resource '%s'", csi->name); + return fz_error_make("cannot find pattern resource '%s'", csi->name); patterntype = fz_dict_gets(obj, "PatternType"); @@ -1556,7 +1556,7 @@ static fz_error pdf_run_SC_imp(pdf_csi *csi, fz_obj *rdb, int what, pdf_material pdf_pattern *pat; error = pdf_load_pattern(&pat, csi->xref, obj); if (error) - return fz_rethrow(error, "cannot load pattern (%d 0 R)", fz_to_num(obj)); + return fz_error_note(error, "cannot load pattern (%d 0 R)", fz_to_num(obj)); pdf_set_pattern(csi, what, pat, csi->top > 0 ? csi->stack : NULL); pdf_drop_pattern(pat); } @@ -1565,18 +1565,18 @@ static fz_error pdf_run_SC_imp(pdf_csi *csi, fz_obj *rdb, int what, pdf_material fz_shade *shd; error = pdf_load_shading(&shd, csi->xref, obj); if (error) - return fz_rethrow(error, "cannot load shading (%d 0 R)", fz_to_num(obj)); + return fz_error_note(error, "cannot load shading (%d 0 R)", fz_to_num(obj)); pdf_set_shade(csi, what, shd); fz_drop_shade(shd); } else { - return fz_throw("unknown pattern type: %d", fz_to_int(patterntype)); + return fz_error_make("unknown pattern type: %d", fz_to_int(patterntype)); } break; case PDF_MAT_SHADE: - return fz_throw("cannot set color in shade objects"); + return fz_error_make("cannot set color in shade objects"); } return fz_okay; @@ -1588,7 +1588,7 @@ static void pdf_run_SC(pdf_csi *csi, fz_obj *rdb) pdf_gstate *gstate = csi->gstate + csi->gtop; error = pdf_run_SC_imp(csi, rdb, PDF_STROKE, &gstate->stroke); if (error) - fz_catch(error, "cannot set color and colorspace"); + fz_error_handle(error, "cannot set color and colorspace"); } static void pdf_run_sc(pdf_csi *csi, fz_obj *rdb) @@ -1597,7 +1597,7 @@ static void pdf_run_sc(pdf_csi *csi, fz_obj *rdb) pdf_gstate *gstate = csi->gstate + csi->gtop; error = pdf_run_SC_imp(csi, rdb, PDF_FILL, &gstate->fill); if (error) - fz_catch(error, "cannot set color and colorspace"); + fz_error_handle(error, "cannot set color and colorspace"); } static void pdf_run_Tc(pdf_csi *csi) @@ -1640,15 +1640,15 @@ static fz_error pdf_run_Tf(pdf_csi *csi, fz_obj *rdb) dict = fz_dict_gets(rdb, "Font"); if (!dict) - return fz_throw("cannot find Font dictionary"); + return fz_error_make("cannot find Font dictionary"); obj = fz_dict_gets(dict, csi->name); if (!obj) - return fz_throw("cannot find font resource: '%s'", csi->name); + return fz_error_make("cannot find font resource: '%s'", csi->name); error = pdf_load_font(&gstate->font, csi->xref, rdb, obj); if (error) - return fz_rethrow(error, "cannot load font (%d 0 R)", fz_to_num(obj)); + return fz_error_note(error, "cannot load font (%d 0 R)", fz_to_num(obj)); return fz_okay; } @@ -1812,15 +1812,15 @@ static fz_error pdf_run_gs(pdf_csi *csi, fz_obj *rdb) dict = fz_dict_gets(rdb, "ExtGState"); if (!dict) - return fz_throw("cannot find ExtGState dictionary"); + return fz_error_make("cannot find ExtGState dictionary"); obj = fz_dict_gets(dict, csi->name); if (!obj) - return fz_throw("cannot find extgstate resource '%s'", csi->name); + return fz_error_make("cannot find extgstate resource '%s'", csi->name); error = pdf_run_extgstate(csi, rdb, obj); if (error) - return fz_rethrow(error, "cannot set ExtGState (%d 0 R)", fz_to_num(obj)); + return fz_error_note(error, "cannot set ExtGState (%d 0 R)", fz_to_num(obj)); return fz_okay; } @@ -1911,17 +1911,17 @@ static fz_error pdf_run_sh(pdf_csi *csi, fz_obj *rdb) dict = fz_dict_gets(rdb, "Shading"); if (!dict) - return fz_throw("cannot find shading dictionary"); + return fz_error_make("cannot find shading dictionary"); obj = fz_dict_gets(dict, csi->name); if (!obj) - return fz_throw("cannot find shading resource: '%s'", csi->name); + return fz_error_make("cannot find shading resource: '%s'", csi->name); if ((csi->dev->hints & FZ_IGNORE_SHADE) == 0) { error = pdf_load_shading(&shd, csi->xref, obj); if (error) - return fz_rethrow(error, "cannot load shading (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot load shading (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); pdf_show_shade(csi, shd); fz_drop_shade(shd); } @@ -2020,7 +2020,7 @@ pdf_run_keyword(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf) case B('B','I'): error = pdf_run_BI(csi, rdb, file); if (error) - return fz_rethrow(error, "cannot draw inline image"); + return fz_error_note(error, "cannot draw inline image"); break; case C('B','M','C'): pdf_run_BMC(csi); break; case B('B','T'): pdf_run_BT(csi); break; @@ -2030,7 +2030,7 @@ pdf_run_keyword(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf) case B('D','o'): error = pdf_run_Do(csi, rdb); if (error) - fz_catch(error, "cannot draw xobject/image"); + fz_error_handle(error, "cannot draw xobject/image"); break; case C('E','M','C'): pdf_run_EMC(csi); break; case B('E','T'): pdf_run_ET(csi); break; @@ -2055,7 +2055,7 @@ pdf_run_keyword(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf) case B('T','f'): error = pdf_run_Tf(csi, rdb); if (error) - fz_catch(error, "cannot set font"); + fz_error_handle(error, "cannot set font"); break; case B('T','j'): pdf_run_Tj(csi); break; case B('T','m'): pdf_run_Tm(csi); break; @@ -2079,7 +2079,7 @@ pdf_run_keyword(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf) case B('g','s'): error = pdf_run_gs(csi, rdb); if (error) - fz_catch(error, "cannot set graphics state"); + fz_error_handle(error, "cannot set graphics state"); break; case A('h'): pdf_run_h(csi); break; case A('i'): pdf_run_i(csi); break; @@ -2098,7 +2098,7 @@ pdf_run_keyword(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf) case B('s','h'): error = pdf_run_sh(csi, rdb); if (error) - fz_catch(error, "cannot draw shading"); + fz_error_handle(error, "cannot draw shading"); break; case A('v'): pdf_run_v(csi); break; case A('w'): pdf_run_w(csi); break; @@ -2125,11 +2125,11 @@ pdf_run_stream(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf, int buflen while (1) { if (csi->top == nelem(csi->stack) - 1) - return fz_throw("stack overflow"); + return fz_error_make("stack overflow"); error = pdf_lex(&tok, file, buf, buflen, &len); if (error) - return fz_rethrow(error, "lexical error in content stream"); + return fz_error_note(error, "lexical error in content stream"); if (in_array) { @@ -2151,12 +2151,12 @@ pdf_run_stream(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf, int buflen if (!strcmp(buf, "Tw") || !strcmp(buf, "Tc")) fz_warn("ignoring keyword '%s' inside array", buf); else - return fz_throw("syntax error in array"); + return fz_error_make("syntax error in array"); } else if (tok == PDF_TOK_EOF) return fz_okay; else - return fz_throw("syntax error in array"); + return fz_error_make("syntax error in array"); } else switch (tok) @@ -2170,7 +2170,7 @@ pdf_run_stream(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf, int buflen { error = pdf_parse_array(&csi->obj, csi->xref, file, buf, buflen); if (error) - return fz_rethrow(error, "cannot parse array"); + return fz_error_note(error, "cannot parse array"); } else { @@ -2181,7 +2181,7 @@ pdf_run_stream(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf, int buflen case PDF_TOK_OPEN_DICT: error = pdf_parse_dict(&csi->obj, csi->xref, file, buf, buflen); if (error) - return fz_rethrow(error, "cannot parse dictionary"); + return fz_error_note(error, "cannot parse dictionary"); break; case PDF_TOK_NAME: @@ -2213,12 +2213,12 @@ pdf_run_stream(pdf_csi *csi, fz_obj *rdb, fz_stream *file, char *buf, int buflen case PDF_TOK_KEYWORD: error = pdf_run_keyword(csi, rdb, file, buf); if (error) - return fz_rethrow(error, "cannot run keyword"); + return fz_error_note(error, "cannot run keyword"); pdf_clear_stack(csi); break; default: - return fz_throw("syntax error in content stream"); + return fz_error_make("syntax error in content stream"); } } } @@ -2241,7 +2241,7 @@ pdf_run_buffer(pdf_csi *csi, fz_obj *rdb, fz_buffer *contents) fz_close(file); fz_free(buf); if (error) - return fz_rethrow(error, "cannot parse content stream"); + return fz_error_note(error, "cannot parse content stream"); return fz_okay; } @@ -2260,7 +2260,7 @@ pdf_run_page_with_usage(pdf_xref *xref, pdf_page *page, fz_device *dev, fz_matri error = pdf_run_buffer(csi, page->resources, page->contents); pdf_free_csi(csi); if (error) - return fz_rethrow(error, "cannot parse page content stream"); + return fz_error_note(error, "cannot parse page content stream"); for (annot = page->annots; annot; annot = annot->next) { @@ -2281,7 +2281,7 @@ pdf_run_page_with_usage(pdf_xref *xref, pdf_page *page, fz_device *dev, fz_matri error = pdf_run_xobject(csi, page->resources, annot->ap, annot->matrix); pdf_free_csi(csi); if (error) - return fz_rethrow(error, "cannot parse annotation appearance stream"); + return fz_error_note(error, "cannot parse annotation appearance stream"); } if (page->transparency) @@ -2303,6 +2303,6 @@ pdf_run_glyph(pdf_xref *xref, fz_obj *resources, fz_buffer *contents, fz_device fz_error error = pdf_run_buffer(csi, resources, contents); pdf_free_csi(csi); if (error) - return fz_rethrow(error, "cannot parse glyph content stream"); + return fz_error_note(error, "cannot parse glyph content stream"); return fz_okay; } diff --git a/pdf/pdf_lex.c b/pdf/pdf_lex.c index 23a5781f..84f584b0 100644 --- a/pdf/pdf_lex.c +++ b/pdf/pdf_lex.c @@ -457,5 +457,5 @@ pdf_lex(int *tok, fz_stream *f, char *buf, int n, int *sl) cleanuperror: *tok = PDF_TOK_ERROR; - return fz_throw("lexical error"); + return fz_error_make("lexical error"); } diff --git a/pdf/pdf_page.c b/pdf/pdf_page.c index 7837c4cf..d7eeb3cd 100644 --- a/pdf/pdf_page.c +++ b/pdf/pdf_page.c @@ -103,9 +103,9 @@ pdf_load_page_tree(pdf_xref *xref) fz_obj *count = fz_dict_gets(pages, "Count"); if (!fz_is_dict(pages)) - return fz_throw("missing page tree"); + return fz_error_make("missing page tree"); if (!fz_is_int(count)) - return fz_throw("missing page count"); + return fz_error_make("missing page count"); xref->page_cap = fz_to_int(count); xref->page_len = 0; @@ -218,7 +218,7 @@ pdf_load_page_contents_array(fz_buffer **bigbufp, pdf_xref *xref, fz_obj *list) error = pdf_load_stream(&one, xref, fz_to_num(stm), fz_to_gen(stm)); if (error) { - fz_catch(error, "cannot load content stream part %d/%d", i + 1, n); + fz_error_handle(error, "cannot load content stream part %d/%d", i + 1, n); continue; } @@ -234,7 +234,7 @@ pdf_load_page_contents_array(fz_buffer **bigbufp, pdf_xref *xref, fz_obj *list) if (n > 0 && big->len == 0) { fz_drop_buffer(big); - return fz_throw("cannot load content stream"); + return fz_error_make("cannot load content stream"); } *bigbufp = big; @@ -250,13 +250,13 @@ pdf_load_page_contents(fz_buffer **bufp, pdf_xref *xref, fz_obj *obj) { error = pdf_load_page_contents_array(bufp, xref, obj); if (error) - return fz_rethrow(error, "cannot load content stream array"); + return fz_error_note(error, "cannot load content stream array"); } else if (pdf_is_stream(xref, fz_to_num(obj), fz_to_gen(obj))) { error = pdf_load_stream(bufp, xref, fz_to_num(obj), fz_to_gen(obj)); if (error) - return fz_rethrow(error, "cannot load content stream (%d 0 R)", fz_to_num(obj)); + return fz_error_note(error, "cannot load content stream (%d 0 R)", fz_to_num(obj)); } else { @@ -278,7 +278,7 @@ pdf_load_page(pdf_page **pagep, pdf_xref *xref, int number) fz_bbox bbox; if (number < 0 || number >= xref->page_len) - return fz_throw("cannot find page %d", number + 1); + return fz_error_make("cannot find page %d", number + 1); /* Ensure that we have a store for resource objects */ if (!xref->store) @@ -341,7 +341,7 @@ pdf_load_page(pdf_page **pagep, pdf_xref *xref, int number) if (error) { pdf_free_page(page); - return fz_rethrow(error, "cannot load page %d contents (%d 0 R)", number + 1, fz_to_num(pageref)); + return fz_error_note(error, "cannot load page %d contents (%d 0 R)", number + 1, fz_to_num(pageref)); } if (pdf_resources_use_blending(page->resources)) diff --git a/pdf/pdf_parse.c b/pdf/pdf_parse.c index 54ed97c1..abbac2c6 100644 --- a/pdf/pdf_parse.c +++ b/pdf/pdf_parse.c @@ -188,7 +188,7 @@ pdf_parse_array(fz_obj **op, pdf_xref *xref, fz_stream *file, char *buf, int cap if (error) { fz_drop_obj(ary); - return fz_rethrow(error, "cannot parse array"); + return fz_error_note(error, "cannot parse array"); } if (tok != PDF_TOK_INT && tok != PDF_TOK_R) @@ -235,7 +235,7 @@ pdf_parse_array(fz_obj **op, pdf_xref *xref, fz_stream *file, char *buf, int cap if (n != 2) { fz_drop_obj(ary); - return fz_throw("cannot parse indirect reference in array"); + return fz_error_make("cannot parse indirect reference in array"); } obj = fz_new_indirect(a, b, xref); fz_array_push(ary, obj); @@ -248,7 +248,7 @@ pdf_parse_array(fz_obj **op, pdf_xref *xref, fz_stream *file, char *buf, int cap if (error) { fz_drop_obj(ary); - return fz_rethrow(error, "cannot parse array"); + return fz_error_note(error, "cannot parse array"); } fz_array_push(ary, obj); fz_drop_obj(obj); @@ -259,7 +259,7 @@ pdf_parse_array(fz_obj **op, pdf_xref *xref, fz_stream *file, char *buf, int cap if (error) { fz_drop_obj(ary); - return fz_rethrow(error, "cannot parse array"); + return fz_error_note(error, "cannot parse array"); } fz_array_push(ary, obj); fz_drop_obj(obj); @@ -298,7 +298,7 @@ pdf_parse_array(fz_obj **op, pdf_xref *xref, fz_stream *file, char *buf, int cap default: fz_drop_obj(ary); - return fz_throw("cannot parse token in array"); + return fz_error_make("cannot parse token in array"); } } } @@ -322,7 +322,7 @@ pdf_parse_dict(fz_obj **op, pdf_xref *xref, fz_stream *file, char *buf, int cap) if (error) { fz_drop_obj(dict); - return fz_rethrow(error, "cannot parse dict"); + return fz_error_note(error, "cannot parse dict"); } skip: @@ -342,7 +342,7 @@ skip: if (tok != PDF_TOK_NAME) { fz_drop_obj(dict); - return fz_throw("invalid key in dict"); + return fz_error_make("invalid key in dict"); } key = fz_new_name(buf); @@ -352,7 +352,7 @@ skip: { fz_drop_obj(key); fz_drop_obj(dict); - return fz_rethrow(error, "cannot parse dict"); + return fz_error_note(error, "cannot parse dict"); } switch (tok) @@ -363,7 +363,7 @@ skip: { fz_drop_obj(key); fz_drop_obj(dict); - return fz_rethrow(error, "cannot parse dict"); + return fz_error_note(error, "cannot parse dict"); } break; @@ -373,7 +373,7 @@ skip: { fz_drop_obj(key); fz_drop_obj(dict); - return fz_rethrow(error, "cannot parse dict"); + return fz_error_note(error, "cannot parse dict"); } break; @@ -392,7 +392,7 @@ skip: { fz_drop_obj(key); fz_drop_obj(dict); - return fz_rethrow(error, "cannot parse dict"); + return fz_error_note(error, "cannot parse dict"); } if (tok == PDF_TOK_CLOSE_DICT || tok == PDF_TOK_NAME || (tok == PDF_TOK_KEYWORD && !strcmp(buf, "ID"))) @@ -411,7 +411,7 @@ skip: { fz_drop_obj(key); fz_drop_obj(dict); - return fz_rethrow(error, "cannot parse dict"); + return fz_error_note(error, "cannot parse dict"); } if (tok == PDF_TOK_R) { @@ -421,12 +421,12 @@ skip: } fz_drop_obj(key); fz_drop_obj(dict); - return fz_throw("invalid indirect reference in dict"); + return fz_error_make("invalid indirect reference in dict"); default: fz_drop_obj(key); fz_drop_obj(dict); - return fz_throw("unknown token in dict"); + return fz_error_make("unknown token in dict"); } fz_dict_put(dict, key, val); @@ -444,19 +444,19 @@ pdf_parse_stm_obj(fz_obj **op, pdf_xref *xref, fz_stream *file, char *buf, int c error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot parse token in object stream"); + return fz_error_note(error, "cannot parse token in object stream"); switch (tok) { case PDF_TOK_OPEN_ARRAY: error = pdf_parse_array(op, xref, file, buf, cap); if (error) - return fz_rethrow(error, "cannot parse object stream"); + return fz_error_note(error, "cannot parse object stream"); break; case PDF_TOK_OPEN_DICT: error = pdf_parse_dict(op, xref, file, buf, cap); if (error) - return fz_rethrow(error, "cannot parse object stream"); + return fz_error_note(error, "cannot parse object stream"); break; case PDF_TOK_NAME: *op = fz_new_name(buf); break; case PDF_TOK_REAL: *op = fz_new_real(fz_atof(buf)); break; @@ -465,7 +465,7 @@ pdf_parse_stm_obj(fz_obj **op, pdf_xref *xref, fz_stream *file, char *buf, int c case PDF_TOK_FALSE: *op = fz_new_bool(0); break; case PDF_TOK_NULL: *op = fz_new_null(); break; case PDF_TOK_INT: *op = fz_new_int(atoi(buf)); break; - default: return fz_throw("unknown token in object stream"); + default: return fz_error_make("unknown token in object stream"); } return fz_okay; @@ -485,40 +485,40 @@ pdf_parse_ind_obj(fz_obj **op, pdf_xref *xref, error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot parse indirect object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse indirect object (%d %d R)", num, gen); if (tok != PDF_TOK_INT) - return fz_throw("expected object number (%d %d R)", num, gen); + return fz_error_make("expected object number (%d %d R)", num, gen); num = atoi(buf); error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot parse indirect object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse indirect object (%d %d R)", num, gen); if (tok != PDF_TOK_INT) - return fz_throw("expected generation number (%d %d R)", num, gen); + return fz_error_make("expected generation number (%d %d R)", num, gen); gen = atoi(buf); error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot parse indirect object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse indirect object (%d %d R)", num, gen); if (tok != PDF_TOK_OBJ) - return fz_throw("expected 'obj' keyword (%d %d R)", num, gen); + return fz_error_make("expected 'obj' keyword (%d %d R)", num, gen); error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot parse indirect object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse indirect object (%d %d R)", num, gen); switch (tok) { case PDF_TOK_OPEN_ARRAY: error = pdf_parse_array(&obj, xref, file, buf, cap); if (error) - return fz_rethrow(error, "cannot parse indirect object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse indirect object (%d %d R)", num, gen); break; case PDF_TOK_OPEN_DICT: error = pdf_parse_dict(&obj, xref, file, buf, cap); if (error) - return fz_rethrow(error, "cannot parse indirect object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse indirect object (%d %d R)", num, gen); break; case PDF_TOK_NAME: obj = fz_new_name(buf); break; @@ -532,7 +532,7 @@ pdf_parse_ind_obj(fz_obj **op, pdf_xref *xref, a = atoi(buf); error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot parse indirect object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse indirect object (%d %d R)", num, gen); if (tok == PDF_TOK_STREAM || tok == PDF_TOK_ENDOBJ) { obj = fz_new_int(a); @@ -543,28 +543,28 @@ pdf_parse_ind_obj(fz_obj **op, pdf_xref *xref, b = atoi(buf); error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot parse indirect object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse indirect object (%d %d R)", num, gen); if (tok == PDF_TOK_R) { obj = fz_new_indirect(a, b, xref); break; } } - return fz_throw("expected 'R' keyword (%d %d R)", num, gen); + return fz_error_make("expected 'R' keyword (%d %d R)", num, gen); case PDF_TOK_ENDOBJ: obj = fz_new_null(); goto skip; default: - return fz_throw("syntax error in object (%d %d R)", num, gen); + return fz_error_make("syntax error in object (%d %d R)", num, gen); } error = pdf_lex(&tok, file, buf, cap, &len); if (error) { fz_drop_obj(obj); - return fz_rethrow(error, "cannot parse indirect object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse indirect object (%d %d R)", num, gen); } skip: diff --git a/pdf/pdf_pattern.c b/pdf/pdf_pattern.c index 33d84c99..418062d6 100644 --- a/pdf/pdf_pattern.c +++ b/pdf/pdf_pattern.c @@ -44,7 +44,7 @@ pdf_load_pattern(pdf_pattern **patp, pdf_xref *xref, fz_obj *dict) { pdf_remove_item(xref->store, pdf_drop_pattern, dict); pdf_drop_pattern(pat); - return fz_rethrow(error, "cannot load pattern stream (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load pattern stream (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } *patp = pat; diff --git a/pdf/pdf_repair.c b/pdf/pdf_repair.c index 067fe2cf..3b7d2a3d 100644 --- a/pdf/pdf_repair.c +++ b/pdf/pdf_repair.c @@ -28,7 +28,7 @@ pdf_repair_obj(fz_stream *file, char *buf, int cap, int *stmofsp, int *stmlenp, error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot parse object"); + return fz_error_note(error, "cannot parse object"); if (tok == PDF_TOK_OPEN_DICT) { fz_obj *dict, *obj; @@ -36,7 +36,7 @@ pdf_repair_obj(fz_stream *file, char *buf, int cap, int *stmofsp, int *stmlenp, /* Send NULL xref so we don't try to resolve references */ error = pdf_parse_dict(&dict, NULL, file, buf, cap); if (error) - return fz_rethrow(error, "cannot parse object"); + return fz_error_note(error, "cannot parse object"); obj = fz_dict_gets(dict, "Type"); if (fz_is_name(obj) && !strcmp(fz_to_name(obj), "XRef")) @@ -72,7 +72,7 @@ pdf_repair_obj(fz_stream *file, char *buf, int cap, int *stmofsp, int *stmlenp, { error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot scan for endobj or stream token"); + return fz_error_note(error, "cannot scan for endobj or stream token"); } if (tok == PDF_TOK_STREAM) @@ -86,14 +86,14 @@ pdf_repair_obj(fz_stream *file, char *buf, int cap, int *stmofsp, int *stmlenp, *stmofsp = fz_tell(file); if (*stmofsp < 0) - return fz_throw("cannot seek in file"); + return fz_error_make("cannot seek in file"); if (stm_len > 0) { fz_seek(file, *stmofsp + stm_len, 0); error = pdf_lex(&tok, file, buf, cap, &len); if (error) - fz_catch(error, "cannot find endstream token, falling back to scanning"); + fz_error_handle(error, "cannot find endstream token, falling back to scanning"); if (tok == PDF_TOK_ENDSTREAM) goto atobjend; fz_seek(file, *stmofsp, 0); @@ -101,7 +101,7 @@ pdf_repair_obj(fz_stream *file, char *buf, int cap, int *stmofsp, int *stmlenp, n = fz_read(file, (unsigned char *) buf, 9); if (n < 0) - return fz_rethrow(n, "cannot read from file"); + return fz_error_note(n, "cannot read from file"); while (memcmp(buf, "endstream", 9) != 0) { @@ -117,7 +117,7 @@ pdf_repair_obj(fz_stream *file, char *buf, int cap, int *stmofsp, int *stmlenp, atobjend: error = pdf_lex(&tok, file, buf, cap, &len); if (error) - return fz_rethrow(error, "cannot scan for endobj token"); + return fz_error_note(error, "cannot scan for endobj token"); if (tok != PDF_TOK_ENDOBJ) fz_warn("object missing 'endobj' token"); } @@ -137,7 +137,7 @@ pdf_repair_obj_stm(pdf_xref *xref, int num, int gen) error = pdf_load_object(&obj, xref, num, gen); if (error) - return fz_rethrow(error, "cannot load object stream object (%d %d R)", num, gen); + return fz_error_note(error, "cannot load object stream object (%d %d R)", num, gen); count = fz_to_int(fz_dict_gets(obj, "N")); @@ -145,7 +145,7 @@ pdf_repair_obj_stm(pdf_xref *xref, int num, int gen) error = pdf_open_stream(&stm, xref, num, gen); if (error) - return fz_rethrow(error, "cannot open object stream object (%d %d R)", num, gen); + return fz_error_note(error, "cannot open object stream object (%d %d R)", num, gen); for (i = 0; i < count; i++) { @@ -153,7 +153,7 @@ pdf_repair_obj_stm(pdf_xref *xref, int num, int gen) if (error || tok != PDF_TOK_INT) { fz_close(stm); - return fz_rethrow(error, "corrupt object stream (%d %d R)", num, gen); + return fz_error_note(error, "corrupt object stream (%d %d R)", num, gen); } n = atoi(buf); @@ -170,7 +170,7 @@ pdf_repair_obj_stm(pdf_xref *xref, int num, int gen) if (error || tok != PDF_TOK_INT) { fz_close(stm); - return fz_rethrow(error, "corrupt object stream (%d %d R)", num, gen); + return fz_error_note(error, "corrupt object stream (%d %d R)", num, gen); } } @@ -213,7 +213,7 @@ pdf_repair_xref(pdf_xref *xref, char *buf, int bufsize) n = fz_read(xref->file, (unsigned char *)buf, MAX(bufsize, 1024)); if (n < 0) { - error = fz_rethrow(n, "cannot read from file"); + error = fz_error_note(n, "cannot read from file"); goto cleanup; } @@ -239,14 +239,14 @@ pdf_repair_xref(pdf_xref *xref, char *buf, int bufsize) tmpofs = fz_tell(xref->file); if (tmpofs < 0) { - error = fz_throw("cannot tell in file"); + error = fz_error_make("cannot tell in file"); goto cleanup; } error = pdf_lex(&tok, xref->file, buf, bufsize, &n); if (error) { - fz_catch(error, "ignoring the rest of the file"); + fz_error_handle(error, "ignoring the rest of the file"); break; } @@ -263,7 +263,7 @@ pdf_repair_xref(pdf_xref *xref, char *buf, int bufsize) error = pdf_repair_obj(xref->file, buf, bufsize, &stm_ofs, &stm_len, &encrypt, &id); if (error) { - error = fz_rethrow(error, "cannot parse object (%d %d R)", num, gen); + error = fz_error_note(error, "cannot parse object (%d %d R)", num, gen); goto cleanup; } @@ -290,7 +290,7 @@ pdf_repair_xref(pdf_xref *xref, char *buf, int bufsize) error = pdf_parse_dict(&dict, xref, xref->file, buf, bufsize); if (error) { - error = fz_rethrow(error, "cannot parse object"); + error = fz_error_note(error, "cannot parse object"); goto cleanup; } @@ -354,7 +354,7 @@ pdf_repair_xref(pdf_xref *xref, char *buf, int bufsize) error = pdf_load_object(&dict, xref, list[i].num, list[i].gen); if (error) { - error = fz_rethrow(error, "cannot load stream object (%d %d R)", list[i].num, list[i].gen); + error = fz_error_note(error, "cannot load stream object (%d %d R)", list[i].num, list[i].gen); goto cleanup; } diff --git a/pdf/pdf_shade.c b/pdf/pdf_shade.c index 1e0bf5ff..cd3ae0e3 100644 --- a/pdf/pdf_shade.c +++ b/pdf/pdf_shade.c @@ -987,13 +987,13 @@ pdf_load_shading_dict(fz_shade **shadep, pdf_xref *xref, fz_obj *dict, fz_matrix if (!obj) { fz_drop_shade(shade); - return fz_throw("shading colorspace is missing"); + return fz_error_make("shading colorspace is missing"); } error = pdf_load_colorspace(&shade->colorspace, xref, obj); if (error) { fz_drop_shade(shade); - return fz_rethrow(error, "cannot load colorspace (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot load colorspace (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); } obj = fz_dict_gets(dict, "Background"); @@ -1018,7 +1018,7 @@ pdf_load_shading_dict(fz_shade **shadep, pdf_xref *xref, fz_obj *dict, fz_matrix error = pdf_load_function(&func[0], xref, obj); if (error) { - error = fz_rethrow(error, "cannot load shading function (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + error = fz_error_note(error, "cannot load shading function (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); goto cleanup; } } @@ -1027,7 +1027,7 @@ pdf_load_shading_dict(fz_shade **shadep, pdf_xref *xref, fz_obj *dict, fz_matrix funcs = fz_array_len(obj); if (funcs != 1 && funcs != shade->colorspace->n) { - error = fz_throw("incorrect number of shading functions"); + error = fz_error_make("incorrect number of shading functions"); goto cleanup; } @@ -1036,7 +1036,7 @@ pdf_load_shading_dict(fz_shade **shadep, pdf_xref *xref, fz_obj *dict, fz_matrix error = pdf_load_function(&func[i], xref, fz_array_get(obj, i)); if (error) { - error = fz_rethrow(error, "cannot load shading function (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + error = fz_error_note(error, "cannot load shading function (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); goto cleanup; } } @@ -1047,7 +1047,7 @@ pdf_load_shading_dict(fz_shade **shadep, pdf_xref *xref, fz_obj *dict, fz_matrix error = pdf_open_stream(&stream, xref, fz_to_num(dict), fz_to_gen(dict)); if (error) { - error = fz_rethrow(error, "cannot open shading stream (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + error = fz_error_note(error, "cannot open shading stream (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); goto cleanup; } } @@ -1062,7 +1062,7 @@ pdf_load_shading_dict(fz_shade **shadep, pdf_xref *xref, fz_obj *dict, fz_matrix case 6: pdf_load_type6_shade(shade, xref, dict, funcs, func, stream); break; case 7: pdf_load_type7_shade(shade, xref, dict, funcs, func, stream); break; default: - error = fz_throw("unknown shading type: %d", type); + error = fz_error_make("unknown shading type: %d", type); goto cleanup; } @@ -1083,7 +1083,7 @@ cleanup: pdf_drop_function(func[i]); fz_drop_shade(shade); - return fz_rethrow(error, "cannot load shading type %d (%d %d R)", type, fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load shading type %d (%d %d R)", type, fz_to_num(dict), fz_to_gen(dict)); } fz_error @@ -1119,11 +1119,11 @@ pdf_load_shading(fz_shade **shadep, pdf_xref *xref, fz_obj *dict) obj = fz_dict_gets(dict, "Shading"); if (!obj) - return fz_throw("syntaxerror: missing shading dictionary"); + return fz_error_make("syntaxerror: missing shading dictionary"); error = pdf_load_shading_dict(shadep, xref, obj, mat); if (error) - return fz_rethrow(error, "cannot load shading dictionary (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); + return fz_error_note(error, "cannot load shading dictionary (%d %d R)", fz_to_num(obj), fz_to_gen(obj)); } /* Naked shading dictionary */ @@ -1131,7 +1131,7 @@ pdf_load_shading(fz_shade **shadep, pdf_xref *xref, fz_obj *dict) { error = pdf_load_shading_dict(shadep, xref, dict, fz_identity); if (error) - return fz_rethrow(error, "cannot load shading dictionary (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load shading dictionary (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } pdf_store_item(xref->store, fz_keep_shade, fz_drop_shade, dict, *shadep); diff --git a/pdf/pdf_stream.c b/pdf/pdf_stream.c index c2dd8578..d0e3bad0 100644 --- a/pdf/pdf_stream.c +++ b/pdf/pdf_stream.c @@ -15,7 +15,7 @@ pdf_is_stream(pdf_xref *xref, int num, int gen) error = pdf_cache_object(xref, num, gen); if (error) { - fz_catch(error, "cannot load object, ignoring error"); + fz_error_handle(error, "cannot load object, ignoring error"); return 0; } @@ -100,7 +100,7 @@ build_filter(fz_stream *chain, pdf_xref * xref, fz_obj * f, fz_obj * p, int num, fz_buffer *globals; error = pdf_load_stream(&globals, xref, fz_to_num(obj), fz_to_gen(obj)); if (error) - fz_catch(error, "cannot load jbig2 global segments"); + fz_error_handle(error, "cannot load jbig2 global segments"); chain = fz_open_jbig2d(chain, globals); fz_drop_buffer(globals); return chain; @@ -236,13 +236,13 @@ pdf_open_raw_stream(fz_stream **stmp, pdf_xref *xref, int num, int gen) fz_error error; if (num < 0 || num >= xref->len) - return fz_throw("object id out of range (%d %d R)", num, gen); + return fz_error_make("object id out of range (%d %d R)", num, gen); x = xref->table + num; error = pdf_cache_object(xref, num, gen); if (error) - return fz_rethrow(error, "cannot load stream object (%d %d R)", num, gen); + return fz_error_note(error, "cannot load stream object (%d %d R)", num, gen); if (x->stm_ofs) { @@ -251,7 +251,7 @@ pdf_open_raw_stream(fz_stream **stmp, pdf_xref *xref, int num, int gen) return fz_okay; } - return fz_throw("object is not a stream"); + return fz_error_make("object is not a stream"); } /* @@ -266,13 +266,13 @@ pdf_open_stream(fz_stream **stmp, pdf_xref *xref, int num, int gen) fz_error error; if (num < 0 || num >= xref->len) - return fz_throw("object id out of range (%d %d R)", num, gen); + return fz_error_make("object id out of range (%d %d R)", num, gen); x = xref->table + num; error = pdf_cache_object(xref, num, gen); if (error) - return fz_rethrow(error, "cannot load stream object (%d %d R)", num, gen); + return fz_error_note(error, "cannot load stream object (%d %d R)", num, gen); if (x->stm_ofs) { @@ -281,7 +281,7 @@ pdf_open_stream(fz_stream **stmp, pdf_xref *xref, int num, int gen) return fz_okay; } - return fz_throw("object is not a stream"); + return fz_error_make("object is not a stream"); } fz_error @@ -293,7 +293,7 @@ pdf_open_stream_at(fz_stream **stmp, pdf_xref *xref, int num, int gen, fz_obj *d fz_seek(xref->file, stm_ofs, 0); return fz_okay; } - return fz_throw("object is not a stream"); + return fz_error_make("object is not a stream"); } /* @@ -309,7 +309,7 @@ pdf_load_raw_stream(fz_buffer **bufp, pdf_xref *xref, int num, int gen) error = pdf_load_object(&dict, xref, num, gen); if (error) - return fz_rethrow(error, "cannot load stream dictionary (%d %d R)", num, gen); + return fz_error_note(error, "cannot load stream dictionary (%d %d R)", num, gen); len = fz_to_int(fz_dict_gets(dict, "Length")); @@ -317,13 +317,13 @@ pdf_load_raw_stream(fz_buffer **bufp, pdf_xref *xref, int num, int gen) error = pdf_open_raw_stream(&stm, xref, num, gen); if (error) - return fz_rethrow(error, "cannot open raw stream (%d %d R)", num, gen); + return fz_error_note(error, "cannot open raw stream (%d %d R)", num, gen); error = fz_read_all(bufp, stm, len); if (error) { fz_close(stm); - return fz_rethrow(error, "cannot read raw stream (%d %d R)", num, gen); + return fz_error_note(error, "cannot read raw stream (%d %d R)", num, gen); } fz_close(stm); @@ -359,11 +359,11 @@ pdf_load_stream(fz_buffer **bufp, pdf_xref *xref, int num, int gen) error = pdf_open_stream(&stm, xref, num, gen); if (error) - return fz_rethrow(error, "cannot open stream (%d %d R)", num, gen); + return fz_error_note(error, "cannot open stream (%d %d R)", num, gen); error = pdf_load_object(&dict, xref, num, gen); if (error) - return fz_rethrow(error, "cannot load stream dictionary (%d %d R)", num, gen); + return fz_error_note(error, "cannot load stream dictionary (%d %d R)", num, gen); len = fz_to_int(fz_dict_gets(dict, "Length")); obj = fz_dict_gets(dict, "Filter"); @@ -377,7 +377,7 @@ pdf_load_stream(fz_buffer **bufp, pdf_xref *xref, int num, int gen) if (error) { fz_close(stm); - return fz_rethrow(error, "cannot read raw stream (%d %d R)", num, gen); + return fz_error_note(error, "cannot read raw stream (%d %d R)", num, gen); } fz_close(stm); diff --git a/pdf/pdf_type3.c b/pdf/pdf_type3.c index 1d851ebe..1d814ddd 100644 --- a/pdf/pdf_type3.c +++ b/pdf/pdf_type3.c @@ -49,7 +49,7 @@ pdf_load_type3_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *rdb, fz_o encoding = fz_dict_gets(dict, "Encoding"); if (!encoding) { - error = fz_throw("syntaxerror: Type3 font missing Encoding"); + error = fz_error_make("syntaxerror: Type3 font missing Encoding"); goto cleanup; } @@ -98,7 +98,7 @@ pdf_load_type3_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *rdb, fz_o widths = fz_dict_gets(dict, "Widths"); if (!widths) { - error = fz_throw("syntaxerror: Type3 font missing Widths"); + error = fz_error_make("syntaxerror: Type3 font missing Widths"); goto cleanup; } @@ -130,7 +130,7 @@ pdf_load_type3_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *rdb, fz_o charprocs = fz_dict_gets(dict, "CharProcs"); if (!charprocs) { - error = fz_throw("syntaxerror: Type3 font missing CharProcs"); + error = fz_error_make("syntaxerror: Type3 font missing CharProcs"); goto cleanup; } @@ -154,5 +154,5 @@ pdf_load_type3_font(pdf_font_desc **fontdescp, pdf_xref *xref, fz_obj *rdb, fz_o cleanup: fz_drop_font(fontdesc->font); fz_free(fontdesc); - return fz_rethrow(error, "cannot load type3 font (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load type3 font (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } diff --git a/pdf/pdf_unicode.c b/pdf/pdf_unicode.c index 2b28b608..3f27eeb7 100644 --- a/pdf/pdf_unicode.c +++ b/pdf/pdf_unicode.c @@ -18,7 +18,7 @@ pdf_load_to_unicode(pdf_font_desc *font, pdf_xref *xref, { error = pdf_load_embedded_cmap(&cmap, xref, cmapstm); if (error) - return fz_rethrow(error, "cannot load embedded cmap (%d %d R)", fz_to_num(cmapstm), fz_to_gen(cmapstm)); + return fz_error_note(error, "cannot load embedded cmap (%d %d R)", fz_to_num(cmapstm), fz_to_gen(cmapstm)); font->to_unicode = pdf_new_cmap(); @@ -54,7 +54,7 @@ pdf_load_to_unicode(pdf_font_desc *font, pdf_xref *xref, error = pdf_load_system_cmap(&font->to_unicode, "Adobe-Korea1-UCS2"); if (error) - return fz_rethrow(error, "cannot load ToUnicode system cmap %s-UCS2", collection); + return fz_error_note(error, "cannot load ToUnicode system cmap %s-UCS2", collection); } if (strings) diff --git a/pdf/pdf_xobject.c b/pdf/pdf_xobject.c index 6228377f..630ca1d9 100644 --- a/pdf/pdf_xobject.c +++ b/pdf/pdf_xobject.c @@ -53,7 +53,7 @@ pdf_load_xobject(pdf_xobject **formp, pdf_xref *xref, fz_obj *dict) { error = pdf_load_colorspace(&form->colorspace, xref, obj); if (error) - fz_catch(error, "cannot load xobject colorspace"); + fz_error_handle(error, "cannot load xobject colorspace"); } } @@ -66,7 +66,7 @@ pdf_load_xobject(pdf_xobject **formp, pdf_xref *xref, fz_obj *dict) { pdf_remove_item(xref->store, pdf_drop_xobject, dict); pdf_drop_xobject(form); - return fz_rethrow(error, "cannot load xobject content stream (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); + return fz_error_note(error, "cannot load xobject content stream (%d %d R)", fz_to_num(dict), fz_to_gen(dict)); } *formp = form; diff --git a/pdf/pdf_xref.c b/pdf/pdf_xref.c index bd25004e..2411ae99 100644 --- a/pdf/pdf_xref.c +++ b/pdf/pdf_xref.c @@ -20,7 +20,7 @@ pdf_load_version(pdf_xref *xref) fz_seek(xref->file, 0, 0); fz_read_line(xref->file, buf, sizeof buf); if (memcmp(buf, "%PDF-", 5) != 0) - return fz_throw("cannot recognize version marker"); + return fz_error_make("cannot recognize version marker"); xref->version = atoi(buf + 5) * 10 + atoi(buf + 7); @@ -43,7 +43,7 @@ pdf_read_start_xref(pdf_xref *xref) n = fz_read(xref->file, buf, sizeof buf); if (n < 0) - return fz_rethrow(n, "cannot read from file"); + return fz_error_note(n, "cannot read from file"); for (i = n - 9; i >= 0; i--) { @@ -57,7 +57,7 @@ pdf_read_start_xref(pdf_xref *xref) } } - return fz_throw("cannot find startxref"); + return fz_error_make("cannot find startxref"); } /* @@ -77,7 +77,7 @@ pdf_read_old_trailer(pdf_xref *xref, char *buf, int cap) fz_read_line(xref->file, buf, cap); if (strncmp(buf, "xref", 4) != 0) - return fz_throw("cannot find xref marker"); + return fz_error_make("cannot find xref marker"); while (1) { @@ -89,7 +89,7 @@ pdf_read_old_trailer(pdf_xref *xref, char *buf, int cap) s = buf; fz_strsep(&s, " "); /* ignore ofs */ if (!s) - return fz_throw("invalid range marker in xref"); + return fz_error_make("invalid range marker in xref"); len = atoi(fz_strsep(&s, " ")); /* broken pdfs where the section is not on a separate line */ @@ -98,26 +98,26 @@ pdf_read_old_trailer(pdf_xref *xref, char *buf, int cap) t = fz_tell(xref->file); if (t < 0) - return fz_throw("cannot tell in file"); + return fz_error_make("cannot tell in file"); fz_seek(xref->file, t + 20 * len, 0); } error = pdf_lex(&tok, xref->file, buf, cap, &n); if (error) - return fz_rethrow(error, "cannot parse trailer"); + return fz_error_note(error, "cannot parse trailer"); if (tok != PDF_TOK_TRAILER) - return fz_throw("expected trailer marker"); + return fz_error_make("expected trailer marker"); error = pdf_lex(&tok, xref->file, buf, cap, &n); if (error) - return fz_rethrow(error, "cannot parse trailer"); + return fz_error_note(error, "cannot parse trailer"); if (tok != PDF_TOK_OPEN_DICT) - return fz_throw("expected trailer dictionary"); + return fz_error_make("expected trailer dictionary"); error = pdf_parse_dict(&xref->trailer, xref, xref->file, buf, cap); if (error) - return fz_rethrow(error, "cannot parse trailer"); + return fz_error_note(error, "cannot parse trailer"); return fz_okay; } @@ -127,7 +127,7 @@ pdf_read_new_trailer(pdf_xref *xref, char *buf, int cap) fz_error error; error = pdf_parse_ind_obj(&xref->trailer, xref, xref->file, buf, cap, NULL, NULL, NULL); if (error) - return fz_rethrow(error, "cannot parse trailer (compressed)"); + return fz_error_note(error, "cannot parse trailer (compressed)"); return fz_okay; } @@ -147,17 +147,17 @@ pdf_read_trailer(pdf_xref *xref, char *buf, int cap) { error = pdf_read_old_trailer(xref, buf, cap); if (error) - return fz_rethrow(error, "cannot read trailer"); + return fz_error_note(error, "cannot read trailer"); } else if (c >= '0' && c <= '9') { error = pdf_read_new_trailer(xref, buf, cap); if (error) - return fz_rethrow(error, "cannot read trailer"); + return fz_error_note(error, "cannot read trailer"); } else { - return fz_throw("cannot recognize xref format: '%c'", c); + return fz_error_make("cannot recognize xref format: '%c'", c); } return fz_okay; @@ -197,7 +197,7 @@ pdf_read_old_xref(fz_obj **trailerp, pdf_xref *xref, char *buf, int cap) fz_read_line(xref->file, buf, cap); if (strncmp(buf, "xref", 4) != 0) - return fz_throw("cannot find xref marker"); + return fz_error_make("cannot find xref marker"); while (1) { @@ -228,7 +228,7 @@ pdf_read_old_xref(fz_obj **trailerp, pdf_xref *xref, char *buf, int cap) { n = fz_read(xref->file, (unsigned char *) buf, 20); if (n < 0) - return fz_rethrow(n, "cannot read xref table"); + return fz_error_note(n, "cannot read xref table"); if (!xref->table[i].type) { s = buf; @@ -241,26 +241,26 @@ pdf_read_old_xref(fz_obj **trailerp, pdf_xref *xref, char *buf, int cap) xref->table[i].gen = atoi(s + 11); xref->table[i].type = s[17]; if (s[17] != 'f' && s[17] != 'n' && s[17] != 'o') - return fz_throw("unexpected xref type: %#x (%d %d R)", s[17], i, xref->table[i].gen); + return fz_error_make("unexpected xref type: %#x (%d %d R)", s[17], i, xref->table[i].gen); } } } error = pdf_lex(&tok, xref->file, buf, cap, &n); if (error) - return fz_rethrow(error, "cannot parse trailer"); + return fz_error_note(error, "cannot parse trailer"); if (tok != PDF_TOK_TRAILER) - return fz_throw("expected trailer marker"); + return fz_error_make("expected trailer marker"); error = pdf_lex(&tok, xref->file, buf, cap, &n); if (error) - return fz_rethrow(error, "cannot parse trailer"); + return fz_error_note(error, "cannot parse trailer"); if (tok != PDF_TOK_OPEN_DICT) - return fz_throw("expected trailer dictionary"); + return fz_error_make("expected trailer dictionary"); error = pdf_parse_dict(trailerp, xref, xref->file, buf, cap); if (error) - return fz_rethrow(error, "cannot parse trailer"); + return fz_error_note(error, "cannot parse trailer"); return fz_okay; } @@ -270,7 +270,7 @@ pdf_read_new_xref_section(pdf_xref *xref, fz_stream *stm, int i0, int i1, int w0 int i, n; if (i0 < 0 || i0 + i1 > xref->len) - return fz_throw("xref stream has too many entries"); + return fz_error_make("xref stream has too many entries"); for (i = i0; i < i0 + i1; i++) { @@ -279,7 +279,7 @@ pdf_read_new_xref_section(pdf_xref *xref, fz_stream *stm, int i0, int i1, int w0 int c = 0; if (fz_is_eof(stm)) - return fz_throw("truncated xref stream"); + return fz_error_make("truncated xref stream"); for (n = 0; n < w0; n++) a = (a << 8) + fz_read_byte(stm); @@ -314,13 +314,13 @@ pdf_read_new_xref(fz_obj **trailerp, pdf_xref *xref, char *buf, int cap) error = pdf_parse_ind_obj(&trailer, xref, xref->file, buf, cap, &num, &gen, &stm_ofs); if (error) - return fz_rethrow(error, "cannot parse compressed xref stream object"); + return fz_error_note(error, "cannot parse compressed xref stream object"); obj = fz_dict_gets(trailer, "Size"); if (!obj) { fz_drop_obj(trailer); - return fz_throw("xref stream missing Size entry (%d %d R)", num, gen); + return fz_error_make("xref stream missing Size entry (%d %d R)", num, gen); } size = fz_to_int(obj); @@ -332,13 +332,13 @@ pdf_read_new_xref(fz_obj **trailerp, pdf_xref *xref, char *buf, int cap) if (num < 0 || num >= xref->len) { fz_drop_obj(trailer); - return fz_throw("object id (%d %d R) out of range (0..%d)", num, gen, xref->len - 1); + return fz_error_make("object id (%d %d R) out of range (0..%d)", num, gen, xref->len - 1); } obj = fz_dict_gets(trailer, "W"); if (!obj) { fz_drop_obj(trailer); - return fz_throw("xref stream missing W entry (%d %d R)", num, gen); + return fz_error_make("xref stream missing W entry (%d %d R)", num, gen); } w0 = fz_to_int(fz_array_get(obj, 0)); w1 = fz_to_int(fz_array_get(obj, 1)); @@ -350,7 +350,7 @@ pdf_read_new_xref(fz_obj **trailerp, pdf_xref *xref, char *buf, int cap) if (error) { fz_drop_obj(trailer); - return fz_rethrow(error, "cannot open compressed xref stream (%d %d R)", num, gen); + return fz_error_note(error, "cannot open compressed xref stream (%d %d R)", num, gen); } if (!index) @@ -360,7 +360,7 @@ pdf_read_new_xref(fz_obj **trailerp, pdf_xref *xref, char *buf, int cap) { fz_close(stm); fz_drop_obj(trailer); - return fz_rethrow(error, "cannot read xref stream (%d %d R)", num, gen); + return fz_error_note(error, "cannot read xref stream (%d %d R)", num, gen); } } else @@ -374,7 +374,7 @@ pdf_read_new_xref(fz_obj **trailerp, pdf_xref *xref, char *buf, int cap) { fz_close(stm); fz_drop_obj(trailer); - return fz_rethrow(error, "cannot read xref stream section (%d %d R)", num, gen); + return fz_error_note(error, "cannot read xref stream section (%d %d R)", num, gen); } } } @@ -402,17 +402,17 @@ pdf_read_xref(fz_obj **trailerp, pdf_xref *xref, int ofs, char *buf, int cap) { error = pdf_read_old_xref(trailerp, xref, buf, cap); if (error) - return fz_rethrow(error, "cannot read xref (ofs=%d)", ofs); + return fz_error_note(error, "cannot read xref (ofs=%d)", ofs); } else if (c >= '0' && c <= '9') { error = pdf_read_new_xref(trailerp, xref, buf, cap); if (error) - return fz_rethrow(error, "cannot read xref (ofs=%d)", ofs); + return fz_error_note(error, "cannot read xref (ofs=%d)", ofs); } else { - return fz_throw("cannot recognize xref format"); + return fz_error_make("cannot recognize xref format"); } return fz_okay; @@ -428,7 +428,7 @@ pdf_read_xref_sections(pdf_xref *xref, int ofs, char *buf, int cap) error = pdf_read_xref(&trailer, xref, ofs, buf, cap); if (error) - return fz_rethrow(error, "cannot read xref section"); + return fz_error_note(error, "cannot read xref section"); /* FIXME: do we overwrite free entries properly? */ xrefstm = fz_dict_gets(trailer, "XRefStm"); @@ -438,7 +438,7 @@ pdf_read_xref_sections(pdf_xref *xref, int ofs, char *buf, int cap) if (error) { fz_drop_obj(trailer); - return fz_rethrow(error, "cannot read /XRefStm xref section"); + return fz_error_note(error, "cannot read /XRefStm xref section"); } } @@ -449,7 +449,7 @@ pdf_read_xref_sections(pdf_xref *xref, int ofs, char *buf, int cap) if (error) { fz_drop_obj(trailer); - return fz_rethrow(error, "cannot read /Prev xref section"); + return fz_error_note(error, "cannot read /Prev xref section"); } } @@ -470,39 +470,39 @@ pdf_load_xref(pdf_xref *xref, char *buf, int bufsize) error = pdf_load_version(xref); if (error) - return fz_rethrow(error, "cannot read version marker"); + return fz_error_note(error, "cannot read version marker"); error = pdf_read_start_xref(xref); if (error) - return fz_rethrow(error, "cannot read startxref"); + return fz_error_note(error, "cannot read startxref"); error = pdf_read_trailer(xref, buf, bufsize); if (error) - return fz_rethrow(error, "cannot read trailer"); + return fz_error_note(error, "cannot read trailer"); size = fz_dict_gets(xref->trailer, "Size"); if (!size) - return fz_throw("trailer missing Size entry"); + return fz_error_make("trailer missing Size entry"); pdf_resize_xref(xref, fz_to_int(size)); error = pdf_read_xref_sections(xref, xref->startxref, buf, bufsize); if (error) - return fz_rethrow(error, "cannot read xref"); + return fz_error_note(error, "cannot read xref"); /* broken pdfs where first object is not free */ if (xref->table[0].type != 'f') - return fz_throw("first object in xref is not free"); + return fz_error_make("first object in xref is not free"); /* broken pdfs where object offsets are out of range */ for (i = 0; i < xref->len; i++) { if (xref->table[i].type == 'n') if (xref->table[i].ofs <= 0 || xref->table[i].ofs >= xref->file_size) - return fz_throw("object offset out of range: %d (%d 0 R)", xref->table[i].ofs, i); + return fz_error_make("object offset out of range: %d (%d 0 R)", xref->table[i].ofs, i); if (xref->table[i].type == 'o') if (xref->table[i].ofs <= 0 || xref->table[i].ofs >= xref->len || xref->table[xref->table[i].ofs].type != 'n') - return fz_throw("invalid reference to an objstm that does not exist: %d (%d 0 R)", xref->table[i].ofs, i); + return error_make("invalid reference to an objstm that does not exist: %d (%d 0 R)", xref->table[i].ofs, i); } return fz_okay; @@ -534,7 +534,7 @@ pdf_open_xref_with_stream(pdf_xref **xrefp, fz_stream *file, char *password) error = pdf_load_xref(xref, xref->scratch, sizeof xref->scratch); if (error) { - fz_catch(error, "trying to repair"); + fz_error_handle(error, "trying to repair"); if (xref->table) { fz_free(xref->table); @@ -550,7 +550,7 @@ pdf_open_xref_with_stream(pdf_xref **xrefp, fz_stream *file, char *password) if (error) { pdf_free_xref(xref); - return fz_rethrow(error, "cannot repair document"); + return fz_error_note(error, "cannot repair document"); } repaired = 1; } @@ -563,7 +563,7 @@ pdf_open_xref_with_stream(pdf_xref **xrefp, fz_stream *file, char *password) if (error) { pdf_free_xref(xref); - return fz_rethrow(error, "cannot decrypt document"); + return fz_error_note(error, "cannot decrypt document"); } } @@ -576,7 +576,7 @@ pdf_open_xref_with_stream(pdf_xref **xrefp, fz_stream *file, char *password) if (!okay) { pdf_free_xref(xref); - return fz_throw("invalid password"); + return fz_error_make("invalid password"); } } } @@ -589,7 +589,7 @@ pdf_open_xref_with_stream(pdf_xref **xrefp, fz_stream *file, char *password) if (error) { pdf_free_xref(xref); - return fz_rethrow(error, "cannot repair document"); + return fz_error_note(error, "cannot repair document"); } hasroot = fz_dict_gets(xref->trailer, "Root") != NULL; @@ -603,7 +603,7 @@ pdf_open_xref_with_stream(pdf_xref **xrefp, fz_stream *file, char *password) error = pdf_load_object(&dict, xref, i, 0); if (error) { - fz_catch(error, "ignoring broken object (%d 0 R)", i); + fz_error_handle(error, "ignoring broken object (%d 0 R)", i); continue; } @@ -717,7 +717,7 @@ pdf_load_obj_stm(pdf_xref *xref, int num, int gen, char *buf, int cap) error = pdf_load_object(&objstm, xref, num, gen); if (error) - return fz_rethrow(error, "cannot load object stream object (%d %d R)", num, gen); + return fz_error_note(error, "cannot load object stream object (%d %d R)", num, gen); count = fz_to_int(fz_dict_gets(objstm, "N")); first = fz_to_int(fz_dict_gets(objstm, "First")); @@ -728,7 +728,7 @@ pdf_load_obj_stm(pdf_xref *xref, int num, int gen, char *buf, int cap) error = pdf_open_stream(&stm, xref, num, gen); if (error) { - error = fz_rethrow(error, "cannot open object stream (%d %d R)", num, gen); + error = fz_error_note(error, "cannot open object stream (%d %d R)", num, gen); goto cleanupbuf; } @@ -737,7 +737,7 @@ pdf_load_obj_stm(pdf_xref *xref, int num, int gen, char *buf, int cap) error = pdf_lex(&tok, stm, buf, cap, &n); if (error || tok != PDF_TOK_INT) { - error = fz_rethrow(error, "corrupt object stream (%d %d R)", num, gen); + error = fz_error_note(error, "corrupt object stream (%d %d R)", num, gen); goto cleanupstm; } numbuf[i] = atoi(buf); @@ -745,7 +745,7 @@ pdf_load_obj_stm(pdf_xref *xref, int num, int gen, char *buf, int cap) error = pdf_lex(&tok, stm, buf, cap, &n); if (error || tok != PDF_TOK_INT) { - error = fz_rethrow(error, "corrupt object stream (%d %d R)", num, gen); + error = fz_error_note(error, "corrupt object stream (%d %d R)", num, gen); goto cleanupstm; } ofsbuf[i] = atoi(buf); @@ -760,14 +760,14 @@ pdf_load_obj_stm(pdf_xref *xref, int num, int gen, char *buf, int cap) error = pdf_parse_stm_obj(&obj, xref, stm, buf, cap); if (error) { - error = fz_rethrow(error, "cannot parse object %d in stream (%d %d R)", i, num, gen); + error = fz_error_note(error, "cannot parse object %d in stream (%d %d R)", i, num, gen); goto cleanupstm; } if (numbuf[i] < 1 || numbuf[i] >= xref->len) { fz_drop_obj(obj); - error = fz_throw("object id (%d 0 R) out of range (0..%d)", numbuf[i], xref->len - 1); + error = fz_error_make("object id (%d 0 R) out of range (0..%d)", numbuf[i], xref->len - 1); goto cleanupstm; } @@ -810,7 +810,7 @@ pdf_cache_object(pdf_xref *xref, int num, int gen) int rnum, rgen; if (num < 0 || num >= xref->len) - return fz_throw("object out of range (%d %d R); xref size %d", num, gen, xref->len); + return fz_error_make("object out of range (%d %d R); xref size %d", num, gen, xref->len); x = &xref->table[num]; @@ -829,10 +829,10 @@ pdf_cache_object(pdf_xref *xref, int num, int gen) error = pdf_parse_ind_obj(&x->obj, xref, xref->file, xref->scratch, sizeof xref->scratch, &rnum, &rgen, &x->stm_ofs); if (error) - return fz_rethrow(error, "cannot parse object (%d %d R)", num, gen); + return fz_error_note(error, "cannot parse object (%d %d R)", num, gen); if (rnum != num) - return fz_throw("found object (%d %d R) instead of (%d %d R)", rnum, rgen, num, gen); + return fz_error_make("found object (%d %d R) instead of (%d %d R)", rnum, rgen, num, gen); if (xref->crypt) pdf_crypt_obj(xref->crypt, x->obj, num, gen); @@ -843,14 +843,14 @@ pdf_cache_object(pdf_xref *xref, int num, int gen) { error = pdf_load_obj_stm(xref, x->ofs, 0, xref->scratch, sizeof xref->scratch); if (error) - return fz_rethrow(error, "cannot load object stream containing object (%d %d R)", num, gen); + return fz_error_note(error, "cannot load object stream containing object (%d %d R)", num, gen); if (!x->obj) - return fz_throw("object (%d %d R) was not found in its object stream", num, gen); + return fz_error_make("object (%d %d R) was not found in its object stream", num, gen); } } else { - return fz_throw("assert: corrupt xref struct"); + return fz_error_make("assert: corrupt xref struct"); } return fz_okay; @@ -863,7 +863,7 @@ pdf_load_object(fz_obj **objp, pdf_xref *xref, int num, int gen) error = pdf_cache_object(xref, num, gen); if (error) - return fz_rethrow(error, "cannot load object (%d %d R) into cache", num, gen); + return fz_error_note(error, "cannot load object (%d %d R) into cache", num, gen); assert(xref->table[num].obj); @@ -885,7 +885,7 @@ pdf_resolve_indirect(fz_obj *ref) fz_error error = pdf_cache_object(xref, num, gen); if (error) { - fz_catch(error, "cannot load object (%d %d R) into cache", num, gen); + fz_error_handle(error, "cannot load object (%d %d R) into cache", num, gen); return ref; } if (xref->table[num].obj) @@ -929,11 +929,11 @@ pdf_open_xref(pdf_xref **xrefp, const char *filename, char *password) file = fz_open_file(filename); if (!file) - return fz_throw("cannot open file '%s': %s", filename, strerror(errno)); + return fz_error_make("cannot open file '%s': %s", filename, strerror(errno)); error = pdf_open_xref_with_stream(xrefp, file, password); if (error) - return fz_rethrow(error, "cannot load document '%s'", filename); + return fz_error_note(error, "cannot load document '%s'", filename); fz_close(file); return fz_okay; |