summaryrefslogtreecommitdiff
path: root/src/cairo-truetype-subset.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2007-06-27 23:01:44 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2007-08-16 15:33:54 +0100
commit56e505298c0f5de360380ca7e968baa0e60ac828 (patch)
treec8724127356e25dfee8cca07bff518e35c77dabe /src/cairo-truetype-subset.c
parent7bd1d5ba3d081ae188fe7f8bc346071d0b8d2278 (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.c15
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) {