summaryrefslogtreecommitdiff
path: root/fitz/filt_dctd.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2011-12-17 00:49:23 +0000
committerRobin Watts <robin.watts@artifex.com>2011-12-17 00:49:23 +0000
commit3eae1449777c4ecccc73a156c7dfff42f927ccc4 (patch)
treeb0cd1bc08b3af218dd06c501402782db91ad0523 /fitz/filt_dctd.c
parentc53b6af33c996a7ae6815ac15254297d43f43a9c (diff)
downloadmupdf-3eae1449777c4ecccc73a156c7dfff42f927ccc4.tar.xz
More memsqueezing fixes; stream creation.
Diffstat (limited to 'fitz/filt_dctd.c')
-rw-r--r--fitz/filt_dctd.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/fitz/filt_dctd.c b/fitz/filt_dctd.c
index bae91195..3209d2ce 100644
--- a/fitz/filt_dctd.c
+++ b/fitz/filt_dctd.c
@@ -207,19 +207,31 @@ skip:
fz_stream *
fz_open_dctd(fz_stream *chain, fz_obj *params)
{
- fz_dctd *state;
+ fz_dctd *state = NULL;
fz_obj *obj;
+ fz_context *ctx = chain->ctx;
- state = fz_malloc_struct(chain->ctx, fz_dctd);
- memset(state, 0, sizeof(fz_dctd));
- state->ctx = chain->ctx;
- state->chain = chain;
- state->color_transform = -1; /* unset */
- state->init = 0;
+ fz_var(state);
- obj = fz_dict_gets(params, "ColorTransform");
- if (obj)
- state->color_transform = fz_to_int(obj);
+ fz_try(ctx)
+ {
+ state = fz_malloc_struct(chain->ctx, fz_dctd);
+ memset(state, 0, sizeof(fz_dctd));
+ state->ctx = ctx;
+ state->chain = chain;
+ state->color_transform = -1; /* unset */
+ state->init = 0;
+
+ obj = fz_dict_gets(params, "ColorTransform");
+ if (obj)
+ state->color_transform = fz_to_int(obj);
+ }
+ fz_catch(ctx)
+ {
+ fz_free(ctx, state);
+ fz_close(chain);
+ fz_rethrow(ctx);
+ }
- return fz_new_stream(chain->ctx, state, read_dctd, close_dctd);
+ return fz_new_stream(ctx, state, read_dctd, close_dctd);
}