diff options
author | Søren Sandmann <sandmann@redhat.com> | 2008-12-11 15:29:23 -0500 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2009-03-28 17:58:48 -0400 |
commit | e3e1b35eb9eb3cf90d882a7452580f9efe00b89a (patch) | |
tree | 8b453b46051067c8745636960a55bea3b1ab1123 /src/cairo-traps.c | |
parent | c2c637cf1d89fc8fdcced4467d602a55ef0b14e0 (diff) | |
download | cairo-e3e1b35eb9eb3cf90d882a7452580f9efe00b89a.tar.gz |
[region] Make cairo_region_t a malloced object.
Diffstat (limited to 'src/cairo-traps.c')
-rw-r--r-- | src/cairo-traps.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/cairo-traps.c b/src/cairo-traps.c index 0afdce23a..3b6dedf7c 100644 --- a/src/cairo-traps.c +++ b/src/cairo-traps.c @@ -608,7 +608,7 @@ _cairo_traps_extents (const cairo_traps_t *traps, **/ cairo_int_status_t _cairo_traps_extract_region (const cairo_traps_t *traps, - cairo_region_t *region) + cairo_region_t **region) { cairo_box_int_t stack_boxes[CAIRO_STACK_ARRAY_LENGTH (cairo_box_int_t)]; cairo_box_int_t *boxes = stack_boxes; @@ -616,7 +616,7 @@ _cairo_traps_extract_region (const cairo_traps_t *traps, cairo_int_status_t status; if (traps->num_traps == 0) { - _cairo_region_init (region); + *region = _cairo_region_create (); return CAIRO_STATUS_SUCCESS; } @@ -661,13 +661,17 @@ _cairo_traps_extract_region (const cairo_traps_t *traps, box_count++; } - status = _cairo_region_init_boxes (region, boxes, box_count); - + *region = _cairo_region_create_boxes (boxes, box_count); + status = _cairo_region_status (*region); + if (boxes != stack_boxes) free (boxes); if (unlikely (status)) - _cairo_region_fini (region); + { + _cairo_region_destroy (*region); + *region = NULL; + } return status; } |