ID: 28311 Updated by: [EMAIL PROTECTED] Reported By: pikeman at pikeman dot sytes dot net -Status: Open +Status: Assigned Bug Type: GD related Operating System: redhat 9 PHP Version: 5.0.0RC2 -Assigned To: +Assigned To: pajoye New Comment:
Assigning to the maintainer Previous Comments: ------------------------------------------------------------------------ [2004-05-07 12:35:48] pikeman at pikeman dot sytes dot net Description: ------------ in gd_topal.c in function pass2_no_dither line 1321 transparency detection code, the pointer is off by one causing a nontransparent band in the transparent region in the resulting picture. The inptr pointer has already been incremented to the next pixel at the transparency check. should be changed to (inptr-1) to check the correct pixel. Reproduce code: --------------- bad code: r = gdTrueColorGetRed (*inptr); g = gdTrueColorGetGreen (*inptr); b = gdTrueColorGetBlue (*inptr++); /* If the pixel is transparent, we assign it the palette index that * will later be added at the end of the palette as the transparent * index. */ if ((im->transparent >= 0) && (im->transparent == *inptr)) { *outptr++ = im->colorsTotal; continue; } Expected result: ---------------- *** gd_topal_original.c 2004-05-07 18:26:49.000000000 +0800 --- gd_topal.c 2004-05-07 17:30:29.000000000 +0800 *************** *** 1318,1324 **** /* If the pixel is transparent, we assign it the palette index that * will later be added at the end of the palette as the transparent * index. */ ! if ((im->transparent >= 0) && (im->transparent == *inptr)) { *outptr++ = im->colorsTotal; continue; --- 1318,1324 ---- /* If the pixel is transparent, we assign it the palette index that * will later be added at the end of the palette as the transparent * index. */ ! if ((im->transparent >= 0) && (im->transparent == *(inptr-1))) { *outptr++ = im->colorsTotal; continue; Actual result: -------------- a bad picture. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28311&edit=1