summaryrefslogtreecommitdiff
path: root/pdf
diff options
context:
space:
mode:
Diffstat (limited to 'pdf')
-rw-r--r--pdf/pdf_annot.c2
-rw-r--r--pdf/pdf_cmap_load.c12
-rw-r--r--pdf/pdf_cmap_parse.c74
-rw-r--r--pdf/pdf_colorspace.c26
-rw-r--r--pdf/pdf_crypt.c36
-rw-r--r--pdf/pdf_font.c54
-rw-r--r--pdf/pdf_function.c90
-rw-r--r--pdf/pdf_image.c40
-rw-r--r--pdf/pdf_interpret.c122
-rw-r--r--pdf/pdf_lex.c2
-rw-r--r--pdf/pdf_page.c16
-rw-r--r--pdf/pdf_parse.c64
-rw-r--r--pdf/pdf_pattern.c2
-rw-r--r--pdf/pdf_repair.c34
-rw-r--r--pdf/pdf_shade.c22
-rw-r--r--pdf/pdf_stream.c30
-rw-r--r--pdf/pdf_type3.c8
-rw-r--r--pdf/pdf_unicode.c4
-rw-r--r--pdf/pdf_xobject.c4
-rw-r--r--pdf/pdf_xref.c136
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;