diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2007-06-27 23:01:44 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2007-08-16 15:33:54 +0100 |
commit | 56e505298c0f5de360380ca7e968baa0e60ac828 (patch) | |
tree | c8724127356e25dfee8cca07bff518e35c77dabe /src/cairo-truetype-subset.c | |
parent | 7bd1d5ba3d081ae188fe7f8bc346071d0b8d2278 (diff) |
[cairo-truetype-subset] Avoid malloc(0).
Avoid attempting to allocate a zero length subset as malloc(0) may return
NULL.
Diffstat (limited to 'src/cairo-truetype-subset.c')
-rw-r--r-- | src/cairo-truetype-subset.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/cairo-truetype-subset.c b/src/cairo-truetype-subset.c index 7f168a53..528f6398 100644 --- a/src/cairo-truetype-subset.c +++ b/src/cairo-truetype-subset.c @@ -931,13 +931,16 @@ _cairo_truetype_subset_init (cairo_truetype_subset_t *truetype_subset, truetype_subset->ascent = (double)font->base.ascent/font->base.units_per_em; truetype_subset->descent = (double)font->base.descent/font->base.units_per_em; - truetype_subset->data = malloc (length); - if (truetype_subset->data == NULL) { - status = CAIRO_STATUS_NO_MEMORY; - goto fail3; - } + if (length) { + truetype_subset->data = malloc (length); + if (truetype_subset->data == NULL) { + status = CAIRO_STATUS_NO_MEMORY; + goto fail3; + } - memcpy (truetype_subset->data, data, length); + memcpy (truetype_subset->data, data, length); + } else + truetype_subset->data = NULL; truetype_subset->data_length = length; if (num_strings) { |