#37, gdImageFillToBorder crashes when used with alpha

master
pajoye 2007-01-20 02:02:35 +00:00
parent c8e6ecdb29
commit 5cc903a073
1 changed files with 9 additions and 2 deletions

View File

@ -1679,11 +1679,17 @@ BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
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 @@ BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
}
if (leftLimit == (-1))
{
im->alphaBlendingFlag = restoreAlphaBleding;
return;
}
/* Seek right */
@ -1737,8 +1744,7 @@ BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
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 @@ BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
}
}
}
im->alphaBlendingFlag = restoreAlphaBleding;
}
/*