summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--draw/draw_device.c2
-rw-r--r--draw/draw_edge.c47
-rw-r--r--draw/draw_glyph.c2
-rw-r--r--fitz/base_hash.c2
-rw-r--r--fitz/base_object.c11
-rw-r--r--fitz/dev_list.c6
-rw-r--r--fitz/dev_null.c2
-rw-r--r--fitz/dev_text.c4
-rw-r--r--fitz/filt_basic.c12
-rw-r--r--fitz/filt_dctd.c2
-rw-r--r--fitz/filt_faxd.c74
-rw-r--r--fitz/filt_flate.c2
-rw-r--r--fitz/filt_jbig2d.c2
-rw-r--r--fitz/filt_lzwd.c2
-rw-r--r--fitz/filt_predict.c2
-rw-r--r--fitz/fitz.h3
-rw-r--r--fitz/res_bitmap.c2
-rw-r--r--fitz/res_font.c4
-rw-r--r--fitz/res_path.c4
-rw-r--r--fitz/res_pixmap.c2
-rw-r--r--fitz/res_store.c4
-rw-r--r--fitz/res_text.c4
-rw-r--r--fitz/stm_buffer.c2
-rw-r--r--fitz/stm_open.c4
-rw-r--r--pdf/pdf_annot.c4
-rw-r--r--pdf/pdf_cmap.c2
-rw-r--r--pdf/pdf_colorspace.c4
-rw-r--r--pdf/pdf_crypt.c2
-rw-r--r--pdf/pdf_font.c2
-rw-r--r--pdf/pdf_function.c2
-rw-r--r--pdf/pdf_interpret.c2
-rw-r--r--pdf/pdf_outline.c2
-rw-r--r--pdf/pdf_page.c2
-rw-r--r--pdf/pdf_pattern.c2
-rw-r--r--pdf/pdf_shade.c2
-rw-r--r--pdf/pdf_xobject.c2
-rw-r--r--xps/xps_doc.c6
-rw-r--r--xps/xps_glyphs.c2
-rw-r--r--xps/xps_gradient.c4
-rw-r--r--xps/xps_outline.c2
-rw-r--r--xps/xps_resource.c2
-rw-r--r--xps/xps_xml.c4
-rw-r--r--xps/xps_zip.c4
43 files changed, 148 insertions, 105 deletions
diff --git a/draw/draw_device.c b/draw/draw_device.c
index cc8f5474..0a1cc812 100644
--- a/draw/draw_device.c
+++ b/draw/draw_device.c
@@ -1532,7 +1532,7 @@ fz_device *
fz_new_draw_device(fz_context *ctx, fz_glyph_cache *cache, fz_pixmap *dest)
{
fz_device *dev;
- fz_draw_device *ddev = fz_malloc(ctx, sizeof(fz_draw_device));
+ fz_draw_device *ddev = fz_malloc_struct(ctx, fz_draw_device);
ddev->cache = cache;
ddev->gel = fz_new_gel(ctx);
ddev->dest = dest;
diff --git a/draw/draw_edge.c b/draw/draw_edge.c
index ec1c1ea8..952050fa 100644
--- a/draw/draw_edge.c
+++ b/draw/draw_edge.c
@@ -26,7 +26,7 @@ struct fz_aa_context_s
void fz_new_aa_context(fz_context *ctx)
{
#ifndef AA_BITS
- ctx->aa = fz_malloc(ctx, sizeof(*ctx->aa));
+ ctx->aa = fz_malloc_struct(ctx, fz_aa_context);
ctx->aa->hscale = 17;
ctx->aa->vscale = 15;
ctx->aa->scale = 256;
@@ -166,21 +166,32 @@ fz_new_gel(fz_context *ctx)
{
fz_gel *gel;
- gel = fz_malloc(ctx, sizeof(fz_gel));
- gel->ctx = ctx;
- gel->cap = 512;
- gel->len = 0;
- gel->edges = fz_malloc_array(ctx, gel->cap, sizeof(fz_edge));
+ gel = fz_malloc_struct(ctx, fz_gel);
+ fz_try(ctx)
+ {
+ gel->edges = NULL;
+ gel->ctx = ctx;
+ gel->cap = 512;
+ gel->len = 0;
+ gel->edges = fz_malloc_array(ctx, gel->cap, sizeof(fz_edge));
- gel->clip.x0 = gel->clip.y0 = BBOX_MAX;
- gel->clip.x1 = gel->clip.y1 = BBOX_MIN;
+ gel->clip.x0 = gel->clip.y0 = BBOX_MAX;
+ gel->clip.x1 = gel->clip.y1 = BBOX_MIN;
- gel->bbox.x0 = gel->bbox.y0 = BBOX_MAX;
- gel->bbox.x1 = gel->bbox.y1 = BBOX_MIN;
+ gel->bbox.x0 = gel->bbox.y0 = BBOX_MAX;
+ gel->bbox.x1 = gel->bbox.y1 = BBOX_MIN;
- gel->acap = 64;
- gel->alen = 0;
- gel->active = fz_malloc_array(ctx, gel->acap, sizeof(fz_edge*));
+ gel->acap = 64;
+ gel->alen = 0;
+ gel->active = fz_malloc_array(ctx, gel->acap, sizeof(fz_edge*));
+ }
+ fz_catch(ctx)
+ {
+ if (gel)
+ fz_free(ctx, gel->edges);
+ fz_free(ctx, gel);
+ fz_rethrow(ctx);
+ }
return gel;
}
@@ -636,8 +647,14 @@ fz_scan_convert_aa(fz_gel *gel, int eofill, fz_bbox clip,
assert(clip.x0 >= xmin);
assert(clip.x1 <= xmax);
- alphas = fz_malloc(ctx, xmax - xmin + 1);
- deltas = fz_malloc(ctx, (xmax - xmin + 1) * sizeof(int));
+ alphas = fz_malloc_no_throw(ctx, xmax - xmin + 1);
+ deltas = fz_malloc_no_throw(ctx, (xmax - xmin + 1) * sizeof(int));
+ if (alphas == NULL || deltas == NULL)
+ {
+ fz_free(ctx, alphas);
+ fz_free(ctx, deltas);
+ fz_throw(ctx, "scan conversion failed (malloc failure)");
+ }
memset(deltas, 0, (xmax - xmin + 1) * sizeof(int));
e = 0;
diff --git a/draw/draw_glyph.c b/draw/draw_glyph.c
index 30f18a5f..328b79f7 100644
--- a/draw/draw_glyph.c
+++ b/draw/draw_glyph.c
@@ -26,7 +26,7 @@ fz_new_glyph_cache(fz_context *ctx)
{
fz_glyph_cache *cache;
- cache = fz_malloc(ctx, sizeof(fz_glyph_cache));
+ cache = fz_malloc_struct(ctx, fz_glyph_cache);
fz_try(ctx)
{
cache->hash = fz_new_hash_table(ctx, 509, sizeof(fz_glyph_key));
diff --git a/fitz/base_hash.c b/fitz/base_hash.c
index 79943a1d..02acc8f1 100644
--- a/fitz/base_hash.c
+++ b/fitz/base_hash.c
@@ -49,7 +49,7 @@ fz_new_hash_table(fz_context *ctx, int initialsize, int keylen)
assert(keylen <= MAX_KEY_LEN);
- table = fz_malloc(ctx, sizeof(fz_hash_table));
+ table = fz_malloc_struct(ctx, fz_hash_table);
table->ctx = ctx;
table->keylen = keylen;
table->size = initialsize;
diff --git a/fitz/base_object.c b/fitz/base_object.c
index ced40414..a0e3ecc0 100644
--- a/fitz/base_object.c
+++ b/fitz/base_object.c
@@ -57,6 +57,7 @@ fz_obj *
fz_new_null(fz_context *ctx)
{
fz_obj *obj = fz_malloc(ctx, sizeof(fz_obj));
+ Memento_label(obj, "fz_obj(null)");
obj->ctx = ctx;
obj->refs = 1;
obj->kind = FZ_NULL;
@@ -67,6 +68,7 @@ fz_obj *
fz_new_bool(fz_context *ctx, int b)
{
fz_obj *obj = fz_malloc(ctx, sizeof(fz_obj));
+ Memento_label(obj, "fz_obj(bool)");
obj->ctx = ctx;
obj->refs = 1;
obj->kind = FZ_BOOL;
@@ -78,6 +80,7 @@ fz_obj *
fz_new_int(fz_context *ctx, int i)
{
fz_obj *obj = fz_malloc(ctx, sizeof(fz_obj));
+ Memento_label(obj, "fz_obj(int)");
obj->ctx = ctx;
obj->refs = 1;
obj->kind = FZ_INT;
@@ -89,6 +92,7 @@ fz_obj *
fz_new_real(fz_context *ctx, float f)
{
fz_obj *obj = fz_malloc(ctx, sizeof(fz_obj));
+ Memento_label(obj, "fz_obj(real)");
obj->ctx = ctx;
obj->refs = 1;
obj->kind = FZ_REAL;
@@ -100,6 +104,7 @@ fz_obj *
fz_new_string(fz_context *ctx, char *str, int len)
{
fz_obj *obj = fz_malloc(ctx, offsetof(fz_obj, u.s.buf) + len + 1);
+ Memento_label(obj, "fz_obj(string)");
obj->ctx = ctx;
obj->refs = 1;
obj->kind = FZ_STRING;
@@ -113,6 +118,7 @@ fz_obj *
fz_new_name(fz_context *ctx, char *str)
{
fz_obj *obj = fz_malloc(ctx, offsetof(fz_obj, u.n) + strlen(str) + 1);
+ Memento_label(obj, "fz_obj(name)");
obj->ctx = ctx;
obj->refs = 1;
obj->kind = FZ_NAME;
@@ -124,6 +130,7 @@ fz_obj *
fz_new_indirect(fz_context *ctx, int num, int gen, void *xref)
{
fz_obj *obj = fz_malloc(ctx, sizeof(fz_obj));
+ Memento_label(obj, "fz_obj(indirect)");
obj->ctx = ctx;
obj->refs = 1;
obj->kind = FZ_INDIRECT;
@@ -382,6 +389,7 @@ fz_new_array(fz_context *ctx, int initialcap)
int i;
obj = fz_malloc(ctx, sizeof(fz_obj));
+ Memento_label(obj, "fz_obj(array)");
obj->ctx = ctx;
obj->refs = 1;
obj->kind = FZ_ARRAY;
@@ -392,6 +400,7 @@ fz_new_array(fz_context *ctx, int initialcap)
fz_try(ctx)
{
obj->u.a.items = fz_malloc_array(ctx, obj->u.a.cap, sizeof(fz_obj*));
+ Memento_label(obj->u.a.items, "fz_obj(array items)");
}
fz_catch(ctx)
{
@@ -537,6 +546,7 @@ fz_new_dict(fz_context *ctx, int initialcap)
int i;
obj = fz_malloc(ctx, sizeof(fz_obj));
+ Memento_label(obj, "fz_obj(dict)");
obj->ctx = ctx;
obj->refs = 1;
obj->kind = FZ_DICT;
@@ -548,6 +558,7 @@ fz_new_dict(fz_context *ctx, int initialcap)
fz_try(ctx)
{
obj->u.d.items = fz_malloc_array(ctx, obj->u.d.cap, sizeof(struct keyval));
+ Memento_label(obj->u.d.items, "fz_obj(dict items)");
}
fz_catch(ctx)
{
diff --git a/fitz/dev_list.c b/fitz/dev_list.c
index 47e8b069..03c65f49 100644
--- a/fitz/dev_list.c
+++ b/fitz/dev_list.c
@@ -70,7 +70,7 @@ fz_new_display_node(fz_context *ctx, fz_display_command cmd, fz_matrix ctm,
fz_display_node *node;
int i;
- node = fz_malloc(ctx, sizeof(fz_display_node));
+ node = fz_malloc_struct(ctx, fz_display_node);
node->cmd = cmd;
node->next = NULL;
node->rect = fz_empty_rect;
@@ -99,7 +99,7 @@ fz_new_display_node(fz_context *ctx, fz_display_command cmd, fz_matrix ctm,
static fz_stroke_state *
fz_clone_stroke_state(fz_context *ctx, fz_stroke_state *stroke)
{
- fz_stroke_state *newstroke = fz_malloc(ctx, sizeof(fz_stroke_state));
+ fz_stroke_state *newstroke = fz_malloc_struct(ctx, fz_stroke_state);
*newstroke = *stroke;
return newstroke;
}
@@ -482,7 +482,7 @@ fz_new_list_device(fz_context *ctx, fz_display_list *list)
fz_display_list *
fz_new_display_list(fz_context *ctx)
{
- fz_display_list *list = fz_malloc(ctx, sizeof(fz_display_list));
+ fz_display_list *list = fz_malloc_struct(ctx, fz_display_list);
list->first = NULL;
list->last = NULL;
list->top = 0;
diff --git a/fitz/dev_null.c b/fitz/dev_null.c
index 4638d802..183c4e21 100644
--- a/fitz/dev_null.c
+++ b/fitz/dev_null.c
@@ -3,7 +3,7 @@
fz_device *
fz_new_device(fz_context *ctx, void *user)
{
- fz_device *dev = fz_malloc(ctx, sizeof(fz_device));
+ fz_device *dev = fz_malloc_struct(ctx, fz_device);
memset(dev, 0, sizeof *dev);
dev->hints = 0;
dev->flags = 0;
diff --git a/fitz/dev_text.c b/fitz/dev_text.c
index bf304778..d5b6ccf7 100644
--- a/fitz/dev_text.c
+++ b/fitz/dev_text.c
@@ -20,7 +20,7 @@ fz_text_span *
fz_new_text_span(fz_context *ctx)
{
fz_text_span *span;
- span = fz_malloc(ctx, sizeof(fz_text_span));
+ span = fz_malloc_struct(ctx, fz_text_span);
span->font = NULL;
span->wmode = 0;
span->size = 0;
@@ -409,7 +409,7 @@ fz_device *
fz_new_text_device(fz_context *ctx, fz_text_span *root)
{
fz_device *dev;
- fz_text_device *tdev = fz_malloc(ctx, sizeof(fz_text_device));
+ fz_text_device *tdev = fz_malloc_struct(ctx, fz_text_device);
tdev->head = root;
tdev->span = root;
tdev->point.x = -1;
diff --git a/fitz/filt_basic.c b/fitz/filt_basic.c
index 7e5f2f21..1096f266 100644
--- a/fitz/filt_basic.c
+++ b/fitz/filt_basic.c
@@ -43,7 +43,7 @@ fz_open_null(fz_stream *chain, int len)
fz_context *ctx = chain->ctx;
assert(chain);
- state = fz_malloc(ctx, sizeof(struct null_filter));
+ state = fz_malloc_struct(ctx, struct null_filter);
state->chain = chain;
state->remain = len;
@@ -156,7 +156,7 @@ fz_open_ahxd(fz_stream *chain)
{
fz_ahxd *state;
- state = fz_malloc(chain->ctx, sizeof(fz_ahxd));
+ state = fz_malloc_struct(chain->ctx, fz_ahxd);
state->chain = chain;
state->eod = 0;
@@ -294,7 +294,7 @@ fz_open_a85d(fz_stream *chain)
fz_a85d *state;
assert(chain);
- state = fz_malloc(chain->ctx, sizeof(fz_a85d));
+ state = fz_malloc_struct(chain->ctx, fz_a85d);
state->chain = chain;
state->rp = state->bp;
state->wp = state->bp;
@@ -382,7 +382,7 @@ fz_open_rld(fz_stream *chain)
fz_rld *state;
assert(chain);
- state = fz_malloc(chain->ctx, sizeof(fz_rld));
+ state = fz_malloc_struct(chain->ctx, fz_rld);
state->chain = chain;
state->run = 0;
state->n = 0;
@@ -425,7 +425,7 @@ fz_open_arc4(fz_stream *chain, unsigned char *key, unsigned keylen)
{
fz_arc4c *state;
- state = fz_malloc(chain->ctx, sizeof(fz_arc4c));
+ state = fz_malloc_struct(chain->ctx, fz_arc4c);
state->chain = chain;
fz_arc4_init(&state->arc4, key, keylen);
@@ -508,7 +508,7 @@ fz_open_aesd(fz_stream *chain, unsigned char *key, unsigned keylen)
fz_aesd *state;
assert(chain);
- state = fz_malloc(chain->ctx, sizeof(fz_aesd));
+ state = fz_malloc_struct(chain->ctx, fz_aesd);
state->chain = chain;
aes_setkey_dec(&state->aes, key, keylen * 8);
state->ivcount = 0;
diff --git a/fitz/filt_dctd.c b/fitz/filt_dctd.c
index 355cca91..5fb1a933 100644
--- a/fitz/filt_dctd.c
+++ b/fitz/filt_dctd.c
@@ -208,7 +208,7 @@ fz_open_dctd(fz_stream *chain, fz_obj *params)
fz_dctd *state;
fz_obj *obj;
- state = fz_malloc(chain->ctx, sizeof(fz_dctd));
+ state = fz_malloc_struct(chain->ctx, fz_dctd);
memset(state, 0, sizeof(fz_dctd));
state->ctx = chain->ctx;
state->chain = chain;
diff --git a/fitz/filt_faxd.c b/fitz/filt_faxd.c
index 98430e0d..be88eda1 100644
--- a/fitz/filt_faxd.c
+++ b/fitz/filt_faxd.c
@@ -665,10 +665,11 @@ fz_open_faxd(fz_stream *chain, fz_obj *params)
fz_faxd *fax;
fz_obj *obj;
fz_context *ctx;
+ fz_stream *stream;
assert(chain);
ctx = chain->ctx;
- fax = fz_malloc(ctx, sizeof(fz_faxd));
+ fax = fz_malloc_struct(ctx, fz_faxd);
fax->chain = chain;
fax->ref = NULL;
@@ -682,45 +683,56 @@ fz_open_faxd(fz_stream *chain, fz_obj *params)
fax->end_of_block = 1;
fax->black_is_1 = 0;
- obj = fz_dict_gets(params, "K");
- if (obj) fax->k = fz_to_int(obj);
+ fz_try(ctx)
+ {
+ obj = fz_dict_gets(params, "K");
+ if (obj) fax->k = fz_to_int(obj);
- obj = fz_dict_gets(params, "EndOfLine");
- if (obj) fax->end_of_line = fz_to_bool(obj);
+ obj = fz_dict_gets(params, "EndOfLine");
+ if (obj) fax->end_of_line = fz_to_bool(obj);
- obj = fz_dict_gets(params, "EncodedByteAlign");
- if (obj) fax->encoded_byte_align = fz_to_bool(obj);
+ obj = fz_dict_gets(params, "EncodedByteAlign");
+ if (obj) fax->encoded_byte_align = fz_to_bool(obj);
- obj = fz_dict_gets(params, "Columns");
- if (obj) fax->columns = fz_to_int(obj);
+ obj = fz_dict_gets(params, "Columns");
+ if (obj) fax->columns = fz_to_int(obj);
- obj = fz_dict_gets(params, "Rows");
- if (obj) fax->rows = fz_to_int(obj);
+ obj = fz_dict_gets(params, "Rows");
+ if (obj) fax->rows = fz_to_int(obj);
- obj = fz_dict_gets(params, "EndOfBlock");
- if (obj) fax->end_of_block = fz_to_bool(obj);
+ obj = fz_dict_gets(params, "EndOfBlock");
+ if (obj) fax->end_of_block = fz_to_bool(obj);
- obj = fz_dict_gets(params, "BlackIs1");
- if (obj) fax->black_is_1 = fz_to_bool(obj);
+ obj = fz_dict_gets(params, "BlackIs1");
+ if (obj) fax->black_is_1 = fz_to_bool(obj);
- fax->stride = ((fax->columns - 1) >> 3) + 1;
- fax->ridx = 0;
- fax->bidx = 32;
- fax->word = 0;
+ fax->stride = ((fax->columns - 1) >> 3) + 1;
+ fax->ridx = 0;
+ fax->bidx = 32;
+ fax->word = 0;
- fax->stage = STATE_NORMAL;
- fax->a = -1;
- fax->c = 0;
- fax->dim = fax->k < 0 ? 2 : 1;
- fax->eolc = 0;
+ fax->stage = STATE_NORMAL;
+ fax->a = -1;
+ fax->c = 0;
+ fax->dim = fax->k < 0 ? 2 : 1;
+ fax->eolc = 0;
- fax->ref = fz_malloc(ctx, fax->stride);
- fax->dst = fz_malloc(ctx, fax->stride);
- fax->rp = fax->dst;
- fax->wp = fax->dst + fax->stride;
+ fax->ref = fz_malloc(ctx, fax->stride);
+ fax->dst = fz_malloc(ctx, fax->stride);
+ fax->rp = fax->dst;
+ fax->wp = fax->dst + fax->stride;
- memset(fax->ref, 0, fax->stride);
- memset(fax->dst, 0, fax->stride);
+ memset(fax->ref, 0, fax->stride);
+ memset(fax->dst, 0, fax->stride);
- return fz_new_stream(ctx, fax, read_faxd, close_faxd);
+ stream = fz_new_stream(ctx, fax, read_faxd, close_faxd);
+ }
+ fz_catch(ctx)
+ {
+ fz_free(ctx, fax->dst);
+ fz_free(ctx, fax->ref);
+ fz_free(ctx, fax);
+ fz_rethrow(ctx);
+ }
+ return stream;
}
diff --git a/fitz/filt_flate.c b/fitz/filt_flate.c
index 9b3370c4..aafb0fc7 100644
--- a/fitz/filt_flate.c
+++ b/fitz/filt_flate.c
@@ -90,7 +90,7 @@ fz_open_flated(fz_stream *chain)
fz_var(code);
- state = fz_malloc(ctx, sizeof(fz_flate));
+ state = fz_malloc_struct(ctx, fz_flate);
state->chain = chain;
state->z.zalloc = zalloc;
diff --git a/fitz/filt_jbig2d.c b/fitz/filt_jbig2d.c
index e2ae4d93..e90be9f8 100644
--- a/fitz/filt_jbig2d.c
+++ b/fitz/filt_jbig2d.c
@@ -83,7 +83,7 @@ fz_open_jbig2d(fz_stream *chain, fz_buffer *globals)
{
fz_jbig2d *state;
- state = fz_malloc(chain->ctx, sizeof(fz_jbig2d));
+ state = fz_malloc_struct(chain->ctx, fz_jbig2d);
state->chain = chain;
state->ctx = jbig2_ctx_new(NULL, JBIG2_OPTIONS_EMBEDDED, NULL, NULL, NULL);
state->gctx = NULL;
diff --git a/fitz/filt_lzwd.c b/fitz/filt_lzwd.c
index 7ca78fc3..eda52669 100644
--- a/fitz/filt_lzwd.c
+++ b/fitz/filt_lzwd.c
@@ -171,7 +171,7 @@ fz_open_lzwd(fz_stream *chain, fz_obj *params)
int i;
assert(chain);
- lzw = fz_malloc(chain->ctx, sizeof(fz_lzwd));
+ lzw = fz_malloc_struct(chain->ctx, fz_lzwd);
lzw->chain = chain;
lzw->eod = 0;
lzw->early_change = 1;
diff --git a/fitz/filt_predict.c b/fitz/filt_predict.c
index d640373e..72b91439 100644
--- a/fitz/filt_predict.c
+++ b/fitz/filt_predict.c
@@ -194,7 +194,7 @@ fz_open_predict(fz_stream *chain, fz_obj *params)
fz_obj *obj;
fz_context *ctx = chain->ctx;
- state = fz_malloc(ctx, sizeof(fz_predict));
+ state = fz_malloc_struct(ctx, fz_predict);
state->chain = chain;
state->predictor = 1;
diff --git a/fitz/fitz.h b/fitz/fitz.h
index 4989b22f..b4c3cd15 100644
--- a/fitz/fitz.h
+++ b/fitz/fitz.h
@@ -189,6 +189,9 @@ void *fz_calloc_no_throw(fz_context *ctx, unsigned int count, unsigned int size)
void *fz_resize_array_no_throw(fz_context *ctx, void *p, unsigned int count, unsigned int size);
char *fz_strdup_no_throw(fz_context *ctx, char *s);
+#define fz_malloc_struct(CTX, STRUCT) \
+ Memento_label(fz_malloc(CTX,sizeof(STRUCT)), #STRUCT)
+
/* runtime (hah!) test for endian-ness */
int fz_is_big_endian(void);
diff --git a/fitz/res_bitmap.c b/fitz/res_bitmap.c
index 02bb6f44..c381fc3c 100644
--- a/fitz/res_bitmap.c
+++ b/fitz/res_bitmap.c
@@ -5,7 +5,7 @@ fz_new_bitmap(fz_context *ctx, int w, int h, int n)
{
fz_bitmap *bit;
- bit = fz_malloc(ctx, sizeof(fz_bitmap));
+ bit = fz_malloc_struct(ctx, fz_bitmap);
bit->refs = 1;
bit->w = w;
bit->h = h;
diff --git a/fitz/res_font.c b/fitz/res_font.c
index 60374746..38d6fdf1 100644
--- a/fitz/res_font.c
+++ b/fitz/res_font.c
@@ -11,7 +11,7 @@ fz_new_font(fz_context *ctx, char *name)
{
fz_font *font;
- font = fz_malloc(ctx, sizeof(fz_font));
+ font = fz_malloc_struct(ctx, fz_font);
font->refs = 1;
if (name)
@@ -124,7 +124,7 @@ struct ft_error
void fz_new_font_context(fz_context *ctx)
{
- ctx->font = fz_malloc(ctx, sizeof(*ctx->font));
+ ctx->font = fz_malloc_struct(ctx, fz_font_context);
ctx->font->ftlib = NULL;
ctx->font->ftlib_refs = 0;
}
diff --git a/fitz/res_path.c b/fitz/res_path.c
index 894e25a8..995afc57 100644
--- a/fitz/res_path.c
+++ b/fitz/res_path.c
@@ -6,7 +6,7 @@ fz_new_path(fz_context *ctx)
{
fz_path *path;
- path = fz_malloc(ctx, sizeof(fz_path));
+ path = fz_malloc_struct(ctx, fz_path);
path->len = 0;
path->cap = 0;
path->items = NULL;
@@ -20,7 +20,7 @@ fz_clone_path(fz_context *ctx, fz_path *old)
fz_path *path;
assert(old);
- path = fz_malloc(ctx, sizeof(fz_path));
+ path = fz_malloc_struct(ctx, fz_path);
path->len = old->len;
path->cap = old->len;
path->items = fz_malloc_array(ctx, path->cap, sizeof(fz_path_item));
diff --git a/fitz/res_pixmap.c b/fitz/res_pixmap.c
index a9a89f9f..1f81e0e1 100644
--- a/fitz/res_pixmap.c
+++ b/fitz/res_pixmap.c
@@ -31,7 +31,7 @@ fz_new_pixmap_with_data(fz_context *ctx, fz_colorspace *colorspace, int w, int h
{
fz_pixmap *pix;
- pix = fz_malloc(ctx, sizeof(fz_pixmap));
+ pix = fz_malloc_struct(ctx, fz_pixmap);
FZ_INIT_STORABLE(pix, 1, fz_free_pixmap_imp);
pix->x = 0;
pix->y = 0;
diff --git a/fitz/res_store.c b/fitz/res_store.c
index a76a9bb1..ab55e6af 100644
--- a/fitz/res_store.c
+++ b/fitz/res_store.c
@@ -38,7 +38,7 @@ void
fz_new_store_context(fz_context *ctx, unsigned int max)
{
fz_store *store;
- store = fz_malloc(ctx, sizeof(fz_store));
+ store = fz_malloc_struct(ctx, fz_store);
fz_try(ctx)
{
store->hash = fz_new_hash_table(ctx, 4096, sizeof(struct refkey));
@@ -175,7 +175,7 @@ fz_store_item(fz_context *ctx, fz_obj *key, void *val_, unsigned int itemsize)
if (!store)
return;
- item = fz_malloc(ctx, sizeof(*item));
+ item = fz_malloc_struct(ctx, fz_item);
/* LOCK */
size = store->size + itemsize;
if (store->max != FZ_STORE_UNLIMITED && size > store->max && ensure_space(ctx, size - store->max))
diff --git a/fitz/res_text.c b/fitz/res_text.c
index 5eaf12b0..b8c5c5fd 100644
--- a/fitz/res_text.c
+++ b/fitz/res_text.c
@@ -5,7 +5,7 @@ fz_new_text(fz_context *ctx, fz_font *font, fz_matrix trm, int wmode)
{
fz_text *text;
- text = fz_malloc(ctx, sizeof(fz_text));
+ text = fz_malloc_struct(ctx, fz_text);
text->font = fz_keep_font(font);
text->trm = trm;
text->wmode = wmode;
@@ -29,7 +29,7 @@ fz_clone_text(fz_context *ctx, fz_text *old)
{
fz_text *text;
- text = fz_malloc(ctx, sizeof(fz_text));
+ text = fz_malloc_struct(ctx, fz_text);
text->font = fz_keep_font(old->font);
text->trm = old->trm;
text->wmode = old->wmode;
diff --git a/fitz/stm_buffer.c b/fitz/stm_buffer.c
index 0f846987..f01e5b19 100644
--- a/fitz/stm_buffer.c
+++ b/fitz/stm_buffer.c
@@ -7,7 +7,7 @@ fz_new_buffer(fz_context *ctx, int size)
size = size > 1 ? size : 16;
- b = fz_malloc(ctx, sizeof(fz_buffer));
+ b = fz_malloc_struct(ctx, fz_buffer);
b->refs = 1;
fz_try(ctx)
{
diff --git a/fitz/stm_open.c b/fitz/stm_open.c
index 733b4c6a..dfb4ed8d 100644
--- a/fitz/stm_open.c
+++ b/fitz/stm_open.c
@@ -7,7 +7,7 @@ fz_new_stream(fz_context *ctx, void *state,
{
fz_stream *stm;
- stm = fz_malloc(ctx, sizeof(fz_stream));
+ stm = fz_malloc_struct(ctx, fz_stream);
stm->refs = 1;
stm->error = 0;
@@ -86,7 +86,7 @@ fz_open_fd(fz_context *ctx, int fd)
fz_stream *stm;
int *state;
- state = fz_malloc(ctx, sizeof(int));
+ state = fz_malloc_struct(ctx, int);
*state = fd;
fz_try(ctx)
diff --git a/pdf/pdf_annot.c b/pdf/pdf_annot.c
index 9cfb8f93..84b403fe 100644
--- a/pdf/pdf_annot.c
+++ b/pdf/pdf_annot.c
@@ -110,7 +110,7 @@ pdf_load_link(pdf_xref *xref, fz_obj *dict)
if (dest)
{
- pdf_link *link = fz_malloc(ctx, sizeof(pdf_link));
+ pdf_link *link = fz_malloc_struct(ctx, pdf_link);
link->kind = kind;
link->rect = bbox;
link->dest = fz_keep_obj(dest);
@@ -226,7 +226,7 @@ pdf_load_annots(pdf_annot **annotp, pdf_xref *xref, fz_obj *annots)
continue;
}
- annot = fz_malloc(ctx, sizeof(pdf_annot));
+ annot = fz_malloc_struct(ctx, pdf_annot);
annot->obj = fz_keep_obj(obj);
annot->rect = pdf_to_rect(ctx, rect);
annot->ap = form;
diff --git a/pdf/pdf_cmap.c b/pdf/pdf_cmap.c
index 86d51b32..2044b555 100644
--- a/pdf/pdf_cmap.c
+++ b/pdf/pdf_cmap.c
@@ -46,7 +46,7 @@ pdf_new_cmap(fz_context *ctx)
{
pdf_cmap *cmap;
- cmap = fz_malloc(ctx, sizeof(pdf_cmap));
+ cmap = fz_malloc_struct(ctx, pdf_cmap);
FZ_INIT_STORABLE(cmap, 1, pdf_free_cmap_imp);
strcpy(cmap->cmap_name, "");
diff --git a/pdf/pdf_colorspace.c b/pdf/pdf_colorspace.c
index 9edc1e90..0efcd13a 100644
--- a/pdf/pdf_colorspace.c
+++ b/pdf/pdf_colorspace.c
@@ -118,7 +118,7 @@ load_separation(pdf_xref *xref, fz_obj *array)
/* RJW: fz_drop_colorspace(ctx, base);
* "cannot load tint function (%d %d R)", fz_to_num(tintobj), fz_to_gen(tintobj) */
- sep = fz_malloc(ctx, sizeof(struct separation));
+ sep = fz_malloc_struct(ctx, struct separation);
sep->base = base;
sep->tint = tint;
@@ -218,7 +218,7 @@ load_indexed(pdf_xref *xref, fz_obj *array)
base = pdf_load_colorspace(xref, baseobj);
/* "cannot load base colorspace (%d %d R)", fz_to_num(baseobj), fz_to_gen(baseobj) */
- idx = fz_malloc(ctx, sizeof(struct indexed));
+ idx = fz_malloc_struct(ctx, struct indexed);
idx->base = base;
idx->high = fz_to_int(highobj);
idx->high = CLAMP(idx->high, 0, 255);
diff --git a/pdf/pdf_crypt.c b/pdf/pdf_crypt.c
index 940d966a..6567cf89 100644
--- a/pdf/pdf_crypt.c
+++ b/pdf/pdf_crypt.c
@@ -53,7 +53,7 @@ pdf_new_crypt(fz_context *ctx, fz_obj *dict, fz_obj *id)
pdf_crypt *crypt;
fz_obj *obj;
- crypt = fz_malloc(ctx, sizeof(pdf_crypt));
+ crypt = fz_malloc_struct(ctx, pdf_crypt);
memset(crypt, 0, sizeof *crypt);
/* Common to all security handlers (PDF 1.7 table 3.18) */
diff --git a/pdf/pdf_font.c b/pdf/pdf_font.c
index 021bfcf9..f590dcde 100644
--- a/pdf/pdf_font.c
+++ b/pdf/pdf_font.c
@@ -339,7 +339,7 @@ pdf_new_font_desc(fz_context *ctx)
{
pdf_font_desc *fontdesc;
- fontdesc = fz_malloc(ctx, sizeof(pdf_font_desc));
+ fontdesc = fz_malloc_struct(ctx, pdf_font_desc);
FZ_INIT_STORABLE(fontdesc, 1, pdf_free_font_imp);
fontdesc->size = sizeof(pdf_font_desc);
diff --git a/pdf/pdf_function.c b/pdf/pdf_function.c
index ae46e5ec..347c8db2 100644
--- a/pdf/pdf_function.c
+++ b/pdf/pdf_function.c
@@ -1352,7 +1352,7 @@ pdf_load_function(pdf_xref *xref, fz_obj *dict)
return func;
}
- func = fz_malloc(ctx, sizeof(pdf_function));
+ func = fz_malloc_struct(ctx, pdf_function);
memset(func, 0, sizeof *func);
FZ_INIT_STORABLE(func, 1, pdf_free_function_imp);
func->size = sizeof(*func);
diff --git a/pdf/pdf_interpret.c b/pdf/pdf_interpret.c
index b6089ca0..674cccc4 100644
--- a/pdf/pdf_interpret.c
+++ b/pdf/pdf_interpret.c
@@ -844,7 +844,7 @@ pdf_new_csi(pdf_xref *xref, fz_device *dev, fz_matrix ctm, char *event)
{
pdf_csi *csi;
- csi = fz_malloc(dev->ctx, sizeof(pdf_csi));
+ csi = fz_malloc_struct(dev->ctx, pdf_csi);
csi->xref = xref;
csi->dev = dev;
csi->event = event;
diff --git a/pdf/pdf_outline.c b/pdf/pdf_outline.c
index 9353d892..a194178c 100644
--- a/pdf/pdf_outline.c
+++ b/pdf/pdf_outline.c
@@ -12,7 +12,7 @@ pdf_load_outline_imp(pdf_xref *xref, fz_obj *dict)
if (fz_is_null(dict))
return NULL;
- node = fz_malloc(ctx, sizeof(fz_outline));
+ node = fz_malloc_struct(ctx, fz_outline);
node->ctx = ctx;
node->title = NULL;
node->page = 0;
diff --git a/pdf/pdf_page.c b/pdf/pdf_page.c
index d0bf57e7..a9e99e52 100644
--- a/pdf/pdf_page.c
+++ b/pdf/pdf_page.c
@@ -289,7 +289,7 @@ pdf_load_page(pdf_xref *xref, int number)
pageobj = xref->page_objs[number];
pageref = xref->page_refs[number];
- page = fz_malloc(ctx, sizeof(pdf_page));
+ page = fz_malloc_struct(ctx, pdf_page);
page->resources = NULL;
page->contents = NULL;
page->transparency = 0;
diff --git a/pdf/pdf_pattern.c b/pdf/pdf_pattern.c
index d6ce5021..1fc356c7 100644
--- a/pdf/pdf_pattern.c
+++ b/pdf/pdf_pattern.c
@@ -45,7 +45,7 @@ pdf_load_pattern(pdf_xref *xref, fz_obj *dict)
return pat;
}
- pat = fz_malloc(ctx, sizeof(pdf_pattern));
+ pat = fz_malloc_struct(ctx, pdf_pattern);
FZ_INIT_STORABLE(pat, 1, pdf_free_pattern_imp);
pat->resources = NULL;
pat->contents = NULL;
diff --git a/pdf/pdf_shade.c b/pdf/pdf_shade.c
index 52e2f199..a2f0e945 100644
--- a/pdf/pdf_shade.c
+++ b/pdf/pdf_shade.c
@@ -975,7 +975,7 @@ pdf_load_shading_dict(pdf_xref *xref, fz_obj *dict, fz_matrix transform)
fz_try(ctx)
{
- shade = fz_malloc(ctx, sizeof(fz_shade));
+ shade = fz_malloc_struct(ctx, fz_shade);
FZ_INIT_STORABLE(shade, 1, fz_free_shade_imp);
shade->type = FZ_MESH;
shade->use_background = 0;
diff --git a/pdf/pdf_xobject.c b/pdf/pdf_xobject.c
index 510860e3..b56996cd 100644
--- a/pdf/pdf_xobject.c
+++ b/pdf/pdf_xobject.c
@@ -47,7 +47,7 @@ pdf_load_xobject(pdf_xref *xref, fz_obj *dict)
return form;
}
- form = fz_malloc(ctx, sizeof(pdf_xobject));
+ form = fz_malloc_struct(ctx, pdf_xobject);
FZ_INIT_STORABLE(form, 1, pdf_free_xobject_imp);
form->resources = NULL;
form->contents = NULL;
diff --git a/xps/xps_doc.c b/xps/xps_doc.c
index 3304e1b9..b7bba194 100644
--- a/xps/xps_doc.c
+++ b/xps/xps_doc.c
@@ -52,7 +52,7 @@ xps_add_fixed_document(xps_document *doc, char *name)
if (!strcmp(fixdoc->name, name))
return;
- fixdoc = fz_malloc(doc->ctx, sizeof(xps_fixdoc));
+ fixdoc = fz_malloc_struct(doc->ctx, xps_fixdoc);
fixdoc->name = fz_strdup(doc->ctx, name);
fixdoc->outline = NULL;
fixdoc->next = NULL;
@@ -79,7 +79,7 @@ xps_add_fixed_page(xps_document *doc, char *name, int width, int height)
if (!strcmp(page->name, name))
return;
- page = fz_malloc(doc->ctx, sizeof(xps_page));
+ page = fz_malloc_struct(doc->ctx, xps_page);
page->name = fz_strdup(doc->ctx, name);
page->number = doc->page_count++;
page->width = width;
@@ -103,7 +103,7 @@ static void
xps_add_link_target(xps_document *doc, char *name)
{
xps_page *page = doc->last_page;
- xps_target *target = fz_malloc(doc->ctx, sizeof *target);
+ xps_target *target = fz_malloc_struct(doc->ctx, xps_target);
target->name = fz_strdup(doc->ctx, name);
target->page = page->number;
target->next = doc->target;
diff --git a/xps/xps_glyphs.c b/xps/xps_glyphs.c
index 9731a448..030ca0e5 100644
--- a/xps/xps_glyphs.c
+++ b/xps/xps_glyphs.c
@@ -81,7 +81,7 @@ xps_lookup_font(xps_document *doc, char *name)
static void
xps_insert_font(xps_document *doc, char *name, fz_font *font)
{
- xps_font_cache *cache = fz_malloc(doc->ctx, sizeof(xps_font_cache));
+ xps_font_cache *cache = fz_malloc_struct(doc->ctx, xps_font_cache);
cache->name = fz_strdup(doc->ctx, name);
cache->font = fz_keep_font(font);
cache->next = doc->font_table;
diff --git a/xps/xps_gradient.c b/xps/xps_gradient.c
index e5acc8a0..8bdc3cc5 100644
--- a/xps/xps_gradient.c
+++ b/xps/xps_gradient.c
@@ -212,7 +212,7 @@ xps_draw_one_radial_gradient(xps_document *doc, fz_matrix ctm,
fz_shade *shade;
/* TODO: this (and the stuff in pdf_shade) should move to res_shade.c */
- shade = fz_malloc(doc->ctx, sizeof(fz_shade));
+ shade = fz_malloc_struct(doc->ctx, fz_shade);
FZ_INIT_STORABLE(shade, 1, fz_free_shade_imp);
shade->colorspace = fz_device_rgb;
shade->bbox = fz_infinite_rect;
@@ -253,7 +253,7 @@ xps_draw_one_linear_gradient(xps_document *doc, fz_matrix ctm,
fz_shade *shade;
/* TODO: this (and the stuff in pdf_shade) should move to res_shade.c */
- shade = fz_malloc(doc->ctx, sizeof(fz_shade));
+ shade = fz_malloc_struct(doc->ctx, fz_shade);
FZ_INIT_STORABLE(shade, 1, fz_free_shade_imp);
shade->colorspace = fz_device_rgb;
shade->bbox = fz_infinite_rect;
diff --git a/xps/xps_outline.c b/xps/xps_outline.c
index ae43a4e8..6252a6c1 100644
--- a/xps/xps_outline.c
+++ b/xps/xps_outline.c
@@ -31,7 +31,7 @@ xps_parse_document_outline(xps_document *doc, xml_element *root)
if (!target || !description)
continue;
- entry = fz_malloc(doc->ctx, sizeof *entry);
+ entry = fz_malloc_struct(doc->ctx, fz_outline);
entry->title = fz_strdup(doc->ctx, description);
entry->page = xps_find_link_target(doc, target);
entry->down = NULL;
diff --git a/xps/xps_resource.c b/xps/xps_resource.c
index 3701f079..fad60488 100644
--- a/xps/xps_resource.c
+++ b/xps/xps_resource.c
@@ -105,7 +105,7 @@ xps_parse_resource_dictionary(xps_document *doc, char *base_uri, xml_element *ro
key = xml_att(node, "x:Key");
if (key)
{
- entry = fz_malloc(doc->ctx, sizeof(xps_resource));
+ entry = fz_malloc_struct(doc->ctx, xps_resource);
entry->name = key;
entry->base_uri = NULL;
entry->base_xml = NULL;
diff --git a/xps/xps_xml.c b/xps/xps_xml.c
index b6dc63c3..15c510a6 100644
--- a/xps/xps_xml.c
+++ b/xps/xps_xml.c
@@ -134,7 +134,7 @@ static void xml_emit_open_tag(struct parser *parser, char *a, char *b)
{
struct element *head, *tail;
- head = fz_malloc(parser->ctx, sizeof(struct element));
+ head = fz_malloc_struct(parser->ctx, struct element);
if (b - a > sizeof(head->name))
b = a + sizeof(head->name);
memcpy(head->name, a, b - a);
@@ -163,7 +163,7 @@ static void xml_emit_att_name(struct parser *parser, char *a, char *b)
struct element *head = parser->head;
struct attribute *att;
- att = fz_malloc(parser->ctx, sizeof(struct attribute));
+ att = fz_malloc_struct(parser->ctx, struct attribute);
if (b - a > sizeof(att->name))
b = a + sizeof(att->name);
memcpy(att->name, a, b - a);
diff --git a/xps/xps_zip.c b/xps/xps_zip.c
index f8099296..42d6b3c4 100644
--- a/xps/xps_zip.c
+++ b/xps/xps_zip.c
@@ -449,7 +449,7 @@ xps_open_directory(fz_context *ctx, char *directory)
{
xps_document *doc;
- doc = fz_malloc(ctx, sizeof(xps_document));
+ doc = fz_malloc_struct(ctx, xps_document);
memset(doc, 0, sizeof *doc);
doc->ctx = ctx;
@@ -474,7 +474,7 @@ xps_open_stream(fz_stream *file)
fz_context *ctx = file->ctx;
xps_document *doc;
- doc = fz_malloc(ctx, sizeof(xps_document));
+ doc = fz_malloc_struct(ctx, xps_document);
memset(doc, 0, sizeof *doc);
doc->ctx = ctx;