ID: 28311 User updated by: pikeman at pikeman dot sytes dot net Reported By: pikeman at pikeman dot sytes dot net -Status: Closed +Status: Open Bug Type: GD related Operating System: redhat 9 -PHP Version: 5.0.0RC2 +PHP Version: 5.0.0RC2,4.3.7RC1 Assigned To: pajoye New Comment:
Hello, I noticed that it is fixed in 5.0 CVS but not in 4.3.x CVS, is it possible to fix it there also? the same bug exists in both versions. Would like to see it fixed for 4.3.7. Additional info: GD 2.0.25 or above already have the same bug fixed. But I am not sure if 4.3.7 will integrate gd 2.0.25 in. Thanks. Previous Comments: ------------------------------------------------------------------------ [2004-05-09 19:47:39] [EMAIL PROTECTED] This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. ------------------------------------------------------------------------ [2004-05-07 15:02:50] [EMAIL PROTECTED] Assigning to the maintainer ------------------------------------------------------------------------ [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
