From 90358a3a42dc5fae7afef112b0caddb7812c9597 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 18 Apr 2007 15:23:40 +0000 Subject: [PATCH] Fix a borderline case with regions svn path=/branches/gtk-2-10/; revision=17609 --- ChangeLog | 7 +++++++ gdk/gdkregion-generic.h | 22 ++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 403ec14ddf..77507fa50d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-04-18 Matthias Clasen + + Merged from trunk: + + * gdk/gdkregion-generic.h (GROWREGION): Handle the case + of nRects == 0 correctly. + 2007-04-18 Emmanuele Bassi Merged from trunk: 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); \ } /*