diff options
author | Robin Watts <robin.watts@artifex.com> | 2011-12-17 00:49:23 +0000 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2011-12-17 00:49:23 +0000 |
commit | 3eae1449777c4ecccc73a156c7dfff42f927ccc4 (patch) | |
tree | b0cd1bc08b3af218dd06c501402782db91ad0523 /fitz/filt_dctd.c | |
parent | c53b6af33c996a7ae6815ac15254297d43f43a9c (diff) | |
download | mupdf-3eae1449777c4ecccc73a156c7dfff42f927ccc4.tar.xz |
More memsqueezing fixes; stream creation.
Diffstat (limited to 'fitz/filt_dctd.c')
-rw-r--r-- | fitz/filt_dctd.c | 34 |
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); } |