summaryrefslogtreecommitdiff
path: root/fitz/filt_dctd.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2011-09-14 17:36:57 +0100
committerRobin Watts <Robin.Watts@artifex.com>2011-09-15 14:50:17 +0100
commitb51ef0eea028c73b6379e832eaa34fff3fbbb927 (patch)
tree1ab685ccd356e7fdc832b2e3322c0486b2670cfb /fitz/filt_dctd.c
parent89ae81f651bfa112b8e07317eb6983beaf7cb212 (diff)
downloadmupdf-b51ef0eea028c73b6379e832eaa34fff3fbbb927.tar.xz
Add context to mupdf.
Huge pervasive change to lots of files, adding a context for exception handling and allocation. In time we'll move more statics into there. Also fix some for(i = 0; i < function(...); i++) calls.
Diffstat (limited to 'fitz/filt_dctd.c')
-rw-r--r--fitz/filt_dctd.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/fitz/filt_dctd.c b/fitz/filt_dctd.c
index 372efe9e..94a06afb 100644
--- a/fitz/filt_dctd.c
+++ b/fitz/filt_dctd.c
@@ -8,6 +8,7 @@ typedef struct fz_dctd_s fz_dctd;
struct fz_dctd_s
{
fz_stream *chain;
+ fz_context *ctx;
int color_transform;
int init;
int stride;
@@ -144,7 +145,7 @@ read_dctd(fz_stream *stm, unsigned char *buf, int len)
jpeg_start_decompress(cinfo);
state->stride = cinfo->output_width * cinfo->output_components;
- state->scanline = fz_malloc(state->stride);
+ state->scanline = fz_malloc(state->ctx, state->stride);
state->rp = state->scanline;
state->wp = state->scanline;
@@ -196,9 +197,9 @@ close_dctd(fz_stream *stm)
skip:
state->chain->rp = state->chain->wp - state->cinfo.src->bytes_in_buffer;
jpeg_destroy_decompress(&state->cinfo);
- fz_free(state->scanline);
+ fz_free(stm->ctx, state->scanline);
fz_close(state->chain);
- fz_free(state);
+ fz_free(stm->ctx, state);
}
fz_stream *
@@ -207,15 +208,16 @@ fz_open_dctd(fz_stream *chain, fz_obj *params)
fz_dctd *state;
fz_obj *obj;
- state = fz_malloc(sizeof(fz_dctd));
- memset(state, 0, sizeof(fz_dctd));
+ assert(chain);
+ state = fz_calloc(chain->ctx, 1, sizeof(fz_dctd));
+ state->ctx = chain->ctx;
state->chain = chain;
state->color_transform = -1; /* unset */
state->init = 0;
- obj = fz_dict_gets(params, "ColorTransform");
+ obj = fz_dict_gets(chain->ctx, params, "ColorTransform");
if (obj)
- state->color_transform = fz_to_int(obj);
+ state->color_transform = fz_to_int(chain->ctx, obj);
- return fz_new_stream(state, read_dctd, close_dctd);
+ return fz_new_stream(chain->ctx, state, read_dctd, close_dctd);
}