commit 29d144712e558aaeb49f4384028dd669d76a410b Author: Maximilian Grothusmann Date: Fri Jun 13 12:44:50 2008 -0700 Fix memory leak by freeing boxes{16,32}. After calling pixman_region_init_rects() or pixman_region32_init_rects(), boxes{16,32} were not freed before returning. Fixes bug 16312. diff --git a/pixman/pixman-region16.c b/pixman/pixman-region16.c index 1a0edfe..869e18d 100644 --- a/pixman/pixman-region16.c +++ b/pixman/pixman-region16.c @@ -47,6 +47,7 @@ pixman_region16_copy_from_region32 (pixman_region16_t *dst, int n_boxes, i; pixman_box32_t *boxes32; pixman_box16_t *boxes16; + pixman_bool_t retval; boxes32 = pixman_region32_rectangles (src, &n_boxes); @@ -64,7 +65,9 @@ pixman_region16_copy_from_region32 (pixman_region16_t *dst, } pixman_region_fini (dst); - return pixman_region_init_rects (dst, boxes16, n_boxes); + retval = pixman_region_init_rects (dst, boxes16, n_boxes); + free (boxes16); + return retval; } #include "pixman-region.c" diff --git a/pixman/pixman-region32.c b/pixman/pixman-region32.c index 4b5598d..6e083b5 100644 --- a/pixman/pixman-region32.c +++ b/pixman/pixman-region32.c @@ -45,6 +45,7 @@ pixman_region32_copy_from_region16 (pixman_region32_t *dst, int n_boxes, i; pixman_box16_t *boxes16; pixman_box32_t *boxes32; + pixman_bool_t retval; boxes16 = pixman_region_rectangles (src, &n_boxes); @@ -62,7 +63,9 @@ pixman_region32_copy_from_region16 (pixman_region32_t *dst, } pixman_region32_fini (dst); - return pixman_region32_init_rects (dst, boxes32, n_boxes); + retval = pixman_region32_init_rects (dst, boxes32, n_boxes); + free (boxes32); + return retval; } #include "pixman-region.c"