diff options
Diffstat (limited to 'pdf/pdf_image.c')
-rw-r--r-- | pdf/pdf_image.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/pdf/pdf_image.c b/pdf/pdf_image.c index b8785cf4..f8c4277c 100644 --- a/pdf/pdf_image.c +++ b/pdf/pdf_image.c @@ -28,25 +28,31 @@ pdf_mask_color_key(fz_pixmap *pix, int n, int *colorkey) static fz_pixmap * pdf_load_image_imp(pdf_xref *xref, fz_obj *rdb, fz_obj *dict, fz_stream *cstm, int forcemask) { - fz_stream * volatile stm = NULL; - fz_pixmap * volatile tile = NULL; + fz_stream *stm = NULL; + fz_pixmap *tile = NULL; fz_obj *obj, *res; int w, h, bpc, n; int imagemask; int interpolate; int indexed; - fz_colorspace * volatile colorspace = NULL; - fz_pixmap * volatile mask = NULL; /* explicit mask/softmask image */ + fz_colorspace *colorspace = NULL; + fz_pixmap *mask = NULL; /* explicit mask/softmask image */ int usecolorkey; int colorkey[FZ_MAX_COLORS * 2]; float decode[FZ_MAX_COLORS * 2]; int stride; - unsigned char * volatile samples = NULL; + unsigned char *samples = NULL; int i, len; fz_context *ctx = xref->ctx; + fz_var(stm); + fz_var(tile); + fz_var(colorspace); + fz_var(mask); + fz_var(samples); + fz_try(ctx) { /* special case for JPEG2000 images */ @@ -285,12 +291,15 @@ pdf_is_jpx_image(fz_context *ctx, fz_obj *dict) static fz_pixmap * pdf_load_jpx_image(pdf_xref *xref, fz_obj *dict) { - fz_buffer * volatile buf = NULL; - fz_colorspace * volatile colorspace = NULL; + fz_buffer *buf = NULL; + fz_colorspace *colorspace = NULL; fz_pixmap *img; fz_obj *obj; fz_context *ctx = xref->ctx; + fz_var(buf); + fz_var(colorspace); + buf = pdf_load_stream(xref, fz_to_num(dict), fz_to_gen(dict)); /* RJW: "cannot load jpx image data" */ @@ -307,7 +316,10 @@ pdf_load_jpx_image(pdf_xref *xref, fz_obj *dict) /* RJW: "cannot load jpx image" */ if (colorspace) + { fz_drop_colorspace(ctx, colorspace); + colorspace = NULL; + } fz_drop_buffer(ctx, buf); buf = NULL; |