blob: 686ab7ceb0d7ca20bd70d39928df41c517754ab2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
From 7647f29a2a3b69592e38f50890a96d8deeaa2dbb Mon Sep 17 00:00:00 2001
From: Jan Slupski <jslupski@juljas.net>
Date: Fri, 15 Feb 2008 00:55:30 +0100
Subject: [PATCH] Fix for a memory leak in pixman.
Port of a 1.6 fix for a memory leak in pixman_region_init_rects/pixman_rect_alloc
when the count of boxes is 0.
---
pixman/src/pixregion.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/pixman/src/pixregion.c b/pixman/src/pixregion.c
index 1ed3ad7..d6caf6c 100644
--- a/pixman/src/pixregion.c
+++ b/pixman/src/pixregion.c
@@ -355,6 +355,15 @@ pixman_region_init_rects(pixman_region16_t *region, pixman_box16_t *boxes, int c
}
pixman_region_init(region);
+
+ /* if it's 0, don't call pixman_rect_alloc -- 0 rectangles is
+ * a special case, and causing pixman_rect_alloc would cause
+ * us to leak memory (because the 0-rect case should be the
+ * static pixman_region_emptyData data).
+ */
+ if (count == 0)
+ return PIXMAN_REGION_STATUS_SUCCESS;
+
if (!pixman_rect_alloc(region, count))
return PIXMAN_REGION_STATUS_FAILURE;
|