summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2007-04-18 15:19:58 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2007-04-18 15:19:58 +0000
commitd558d49c1413ed09694896fb6684e76f641991b7 (patch)
tree7daad46d4b6d08a7805e439ed8c3ce2410b0291f /gdk
parentb235fff0bf01c9476ea10337657bc4820f64e0cb (diff)
downloadgtk+-d558d49c1413ed09694896fb6684e76f641991b7.tar.gz
Handle a borderline case correctly
svn path=/trunk/; revision=17608
Diffstat (limited to 'gdk')
-rw-r--r--gdk/gdkregion-generic.h22
1 files changed, 14 insertions, 8 deletions
diff --git a/gdk/gdkregion-generic.h b/gdk/gdkregion-generic.h
index bae8c9b776..9f510621e7 100644
--- a/gdk/gdkregion-generic.h
+++ b/gdk/gdkregion-generic.h
@@ -83,14 +83,20 @@ struct _GdkRegion
(idRect)->extents.y2 = (r)->y2;\
}
-#define GROWREGION(reg, nRects){ \
- if ((reg)->rects == &(reg)->extents) { \
- (reg)->rects = g_new (GdkRegionBox, (nRects)); \
- (reg)->rects[0] = reg->extents; \
- } \
- else \
- (reg)->rects = g_renew (GdkRegionBox, (reg)->rects, (nRects)); \
- (reg)->size = (nRects); \
+#define GROWREGION(reg, nRects) { \
+ if ((nRects) == 0) { \
+ if ((reg)->rects != &(reg)->extents) { \
+ g_free ((reg)->rects); \
+ (reg)->rects = &(reg)->extents; \
+ } \
+ } \
+ else if ((reg)->rects == &(reg)->extents) { \
+ (reg)->rects = g_new (GdkRegionBox, (nRects)); \
+ (reg)->rects[0] = (reg)->extents; \
+ } \
+ else \
+ (reg)->rects = g_renew (GdkRegionBox, (reg)->rects, (nRects)); \
+ (reg)->size = (nRects); \
}
/*