summaryrefslogtreecommitdiff
path: root/xps
diff options
context:
space:
mode:
Diffstat (limited to 'xps')
-rw-r--r--xps/xps_glyphs.c2
-rw-r--r--xps/xps_image.c6
-rw-r--r--xps/xps_outline.c12
-rw-r--r--xps/xps_zip.c6
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;
}