diff options
Diffstat (limited to 'xps')
-rw-r--r-- | xps/xps_glyphs.c | 2 | ||||
-rw-r--r-- | xps/xps_image.c | 6 | ||||
-rw-r--r-- | xps/xps_outline.c | 12 | ||||
-rw-r--r-- | xps/xps_zip.c | 6 |
4 files changed, 17 insertions, 9 deletions
diff --git a/xps/xps_glyphs.c b/xps/xps_glyphs.c index 6a7a1dcc..6b262016 100644 --- a/xps/xps_glyphs.c +++ b/xps/xps_glyphs.c @@ -46,7 +46,7 @@ xps_encode_font_char(fz_font *font, int code) { FT_Face face = font->ft_face; int gid = FT_Get_Char_Index(face, code); - if (gid == 0 && face->charmap->platform_id == 3 && face->charmap->encoding_id == 0) + if (gid == 0 && face->charmap && face->charmap->platform_id == 3 && face->charmap->encoding_id == 0) gid = FT_Get_Char_Index(face, 0xF000 | code); return gid; } diff --git a/xps/xps_image.c b/xps/xps_image.c index 1f46a756..1a6a8573 100644 --- a/xps/xps_image.c +++ b/xps/xps_image.c @@ -160,13 +160,15 @@ xps_parse_image_brush(xps_document *doc, fz_matrix ctm, fz_rect area, { image = xps_load_image(doc->ctx, part->data, part->size); } + fz_always(doc->ctx) + { + xps_free_part(doc, part); + } fz_catch(doc->ctx) { fz_warn(doc->ctx, "cannot decode image resource"); - xps_free_part(doc, part); return; } - xps_free_part(doc, part); xps_parse_tiling_brush(doc, ctm, area, base_uri, dict, root, xps_paint_image_brush, image); diff --git a/xps/xps_outline.c b/xps/xps_outline.c index 0feb7b24..21dc0710 100644 --- a/xps/xps_outline.c +++ b/xps/xps_outline.c @@ -88,12 +88,14 @@ xps_load_document_structure(xps_document *doc, xps_fixdoc *fixdoc) { root = xml_parse_document(doc->ctx, part->data, part->size); } - fz_catch(doc->ctx) + fz_always(doc->ctx) { xps_free_part(doc, part); + } + fz_catch(doc->ctx) + { fz_rethrow(doc->ctx); } - xps_free_part(doc, part); if (!root) return NULL; @@ -101,12 +103,14 @@ xps_load_document_structure(xps_document *doc, xps_fixdoc *fixdoc) { outline = xps_parse_document_structure(doc, root); } - fz_catch(doc->ctx) + fz_always(doc->ctx) { xml_free_element(doc->ctx, root); + } + fz_catch(doc->ctx) + { fz_rethrow(doc->ctx); } - xml_free_element(doc->ctx, root); return outline; } diff --git a/xps/xps_zip.c b/xps/xps_zip.c index 58f04009..e36f9c0f 100644 --- a/xps/xps_zip.c +++ b/xps/xps_zip.c @@ -626,12 +626,14 @@ xps_open_document(fz_context *ctx, char *filename) { doc = xps_open_document_with_stream(file); } - fz_catch(ctx) + fz_always(ctx) { fz_close(file); + } + fz_catch(ctx) + { fz_throw(ctx, "cannot load document '%s'", filename); } - fz_close(file); return doc; } |