Skip to content

Commit

Permalink
Fix #77700: Writing truecolor images as GIF ignores interlace flag
Browse files Browse the repository at this point in the history
We  revert the interlace flag related part of commit ff2822a[1], since
contrary to the transparent color, the interlace flag is not retained
by `gdImageCreatePaletteFromTrueColor()`.  This also matches upstream
libgd.

[1] <http://git.php.net/?p=php-src.git;a=commit;h=ff2822a82b740edb8ccf307f080bae188c200fb9>
  • Loading branch information
cmb69 committed Mar 5, 2019
1 parent 0e836f5 commit 41fb0ea
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
4 changes: 4 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ PHP NEWS
. Fixed bug #50020 (DateInterval:createDateFromString() silently fails).
(Derick)

- GD:
. Fixed bug #77700 (Writing truecolor images as GIF ignores interlace flag).
(cmb)

- MySQLi:
. Fixed bug #77597 (mysqli_fetch_field hangs scripts). (Nikita)

Expand Down
2 changes: 1 addition & 1 deletion ext/gd/libgd/gd_gif_out.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ void gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
BitsPerPixel = colorstobpp(tim->colorsTotal);
/* All set, let's do it. */
GIFEncode(
out, tim->sx, tim->sy, tim->interlace, 0, tim->transparent, BitsPerPixel,
out, tim->sx, tim->sy, interlace, 0, tim->transparent, BitsPerPixel,
tim->red, tim->green, tim->blue, tim);
if (pim) {
/* Destroy palette based temporary image. */
Expand Down
24 changes: 24 additions & 0 deletions ext/gd/tests/bug77700.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
--TEST--
Bug #77700 (Writing truecolor images as GIF ignores interlace flag)
--SKIPIF--
<?php
if (!extension_loaded('gd')) die('skip gd extension not available');
?>
--FILE--
<?php
$im = imagecreatetruecolor(10, 10);
imagefilledrectangle($im, 0, 0, 9, 9, imagecolorallocate($im, 255, 255, 255));
imageinterlace($im, 1);
imagegif($im, __DIR__ . 'bug77700.gif');

$im = imagecreatefromgif(__DIR__ . 'bug77700.gif');
var_dump(imageinterlace($im));
?>
===DONE===
--EXPECT--
int(1)
===DONE===
--CLEAN--
<?php
unlink(__DIR__ . 'bug77700.gif');
?>

0 comments on commit 41fb0ea

Please sign in to comment.