From 6930bdb289213f61ee11ef0f7efd173a34249110 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Thu, 7 Sep 2006 11:40:01 +0000 Subject: [PATCH] fix a crash when using mirrorhorizontal and resizing a window to width 1 --- render/gradient.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/render/gradient.c b/render/gradient.c index d2cb6814..91fe4e27 100644 --- a/render/gradient.c +++ b/render/gradient.c @@ -458,28 +458,30 @@ static void gradient_mirrorhorizontal(RrSurface *sf, gint w, gint h) VARS(x); SETUP(x, sf->primary, sf->secondary, w/2); - for (x = w - 1; x > w/2-1; --x) { /* 0 -> w-1 */ - current = COLOR(x); - datav = data; - for (y = h - 1; y >= 0; --y) { /* 0 -> h */ - *datav = current; - datav += w; - } - ++data; + if (w > 1) { + for (x = w - 1; x > w/2-1; --x) { /* 0 -> w-1 */ + current = COLOR(x); + datav = data; + for (y = h - 1; y >= 0; --y) { /* 0 -> h */ + *datav = current; + datav += w; + } + ++data; - NEXT(x); - } - SETUP(x, sf->secondary, sf->primary, w/2); - for (x = w/2 - 1; x > 0; --x) { /* 0 -> w-1 */ - current = COLOR(x); - datav = data; - for (y = h - 1; y >= 0; --y) { /* 0 -> h */ - *datav = current; - datav += w; + NEXT(x); } - ++data; + SETUP(x, sf->secondary, sf->primary, w/2); + for (x = w/2 - 1; x > 0; --x) { /* 0 -> w-1 */ + current = COLOR(x); + datav = data; + for (y = h - 1; y >= 0; --y) { /* 0 -> h */ + *datav = current; + datav += w; + } + ++data; - NEXT(x); + NEXT(x); + } } current = COLOR(x); for (y = h - 1; y >= 0; --y) /* 0 -> h */ -- 2.44.0