cvs: gd /libgd gd.c
[email protected] ("Pierre-Alain Joye")
| Newsgroups | php.gd.cvs |
|---|---|
| Message-ID | <cvspajoye1169258555@cvsserver> |
pajoye Sat Jan 20 02:02:35 2007 UTC
Modified files:
/gd/libgd gd.c
Log:
#37, gdImageFillToBorder crashes when used with alpha
http://cvs.php.net/viewvc.cgi/gd/libgd/gd.c?r1=1.46&r2=1.47&diff_format=u
Index: gd/libgd/gd.c
diff -u gd/libgd/gd.c:1.46 gd/libgd/gd.c:1.47
--- gd/libgd/gd.c:1.46 Fri Jan 5 04:11:10 2007
+++ gd/libgd/gd.c Sat Jan 20 02:02:35 2007
@@ -1,4 +1,4 @@
-/* $Id: gd.c,v 1.46 2007/01/05 04:11:10 pajoye Exp $ */
+/* $Id: gd.c,v 1.47 2007/01/20 02:02:35 pajoye Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -1679,11 +1679,17 @@
int leftLimit, rightLimit;
int i;
leftLimit = (-1);
+ int restoreAlphaBleding;
+
if (border < 0)
{
/* Refuse to fill to a non-solid border */
return;
}
+
+ restoreAlphaBleding = im->alphaBlendingFlag;
+ im->alphaBlendingFlag = 0;
+
for (i = x; (i >= 0); i--)
{
if (gdImageGetPixel (im, i, y) == border)
@@ -1695,6 +1701,7 @@
}
if (leftLimit == (-1))
{
+ im->alphaBlendingFlag = restoreAlphaBleding;
return;
}
/* Seek right */
@@ -1737,8 +1744,7 @@
lastBorder = 1;
for (i = leftLimit; (i <= rightLimit); i++)
{
- int c;
- c = gdImageGetPixel (im, i, y + 1);
+ int c = gdImageGetPixel (im, i, y + 1);
if (lastBorder)
{
if ((c != border) && (c != color))
@@ -1753,6 +1759,7 @@
}
}
}
+ im->alphaBlendingFlag = restoreAlphaBleding;
}
/*