summaryrefslogtreecommitdiff
path: root/render/image.c
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@comhem.se>2008-03-28 21:01:46 +0100
committerMikael Magnusson <mikachu@comhem.se>2008-04-15 17:59:22 +0200
commitd47d5a2801fb2bb3a23d9a53267d33a679109551 (patch)
tree817dec85231ed75df95d1dc4fb0495179df671c6 /render/image.c
parent0e92465751019197a19680c56984664afb7c7999 (diff)
When icons had a very small aspect ratio, we crashed, don't.
Diffstat (limited to 'render/image.c')
-rw-r--r--render/image.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/render/image.c b/render/image.c
index be3e46be..96486437 100644
--- a/render/image.c
+++ b/render/image.c
@@ -124,6 +124,12 @@ static RrImagePic* ResizeImage(RrPixel32 *src,
gulong ratioX, ratioY;
gulong aspectW, aspectH;
+ /* XXX should these variables be ensured to not be zero in the callers? */
+ srcW = srcW ? srcW : 1;
+ srcH = srcH ? srcH : 1;
+ dstW = dstW ? dstW : 1;
+ dstH = dstH ? dstH : 1;
+
/* keep the aspect ratio */
aspectW = dstW;
aspectH = (gint)(dstW * ((gdouble)srcH / srcW));
@@ -131,11 +137,11 @@ static RrImagePic* ResizeImage(RrPixel32 *src,
aspectH = dstH;
aspectW = (gint)(dstH * ((gdouble)srcW / srcH));
}
- dstW = aspectW;
- dstH = aspectH;
+ dstW = aspectW ? aspectW : 1;
+ dstH = aspectH ? aspectH : 1;
if (srcW == dstW && srcH == dstH)
- return NULL; /* no scaling needed ! */
+ return NULL; /* no scaling needed! */
dststart = dst = g_new(RrPixel32, dstW * dstH);