fa                                       Tue, 01 Nov 2011 11:51:53 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=318638

Log:
Fixed #60160 and added a test for it

Bug: https://bugs.php.net/60160 (Analyzed) imagefill() doesn't work correctly 
for small images
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/ext/gd/libgd/gd.c
    A   php/php-src/branches/PHP_5_3/ext/gd/tests/bug60160.phpt
    U   php/php-src/branches/PHP_5_4/ext/gd/libgd/gd.c
    A   php/php-src/branches/PHP_5_4/ext/gd/tests/bug60160.phpt
    U   php/php-src/trunk/ext/gd/libgd/gd.c
    A   php/php-src/trunk/ext/gd/tests/bug60160.phpt

Modified: php/php-src/branches/PHP_5_3/ext/gd/libgd/gd.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/gd/libgd/gd.c      2011-11-01 10:25:47 UTC 
(rev 318637)
+++ php/php-src/branches/PHP_5_3/ext/gd/libgd/gd.c      2011-11-01 11:51:53 UTC 
(rev 318638)
@@ -1894,19 +1894,14 @@
        if (im->sx < 4) {
                int ix = x, iy = y, c;
                do {
-                       c = gdImageGetPixel(im, ix, iy);
-                       if (c != oc) {
-                               goto done;
-                       }
-                       gdImageSetPixel(im, ix, iy, nc);
-               } while(ix++ < (im->sx -1));
-               ix = x; iy = y + 1;
-               do {
-                       c = gdImageGetPixel(im, ix, iy);
-                       if (c != oc) {
-                               goto done;
-                       }
-                       gdImageSetPixel(im, ix, iy, nc);
+                       do {
+                               c = gdImageGetPixel(im, ix, iy);
+                               if (c != oc) {
+                                       goto done;
+                               }
+                               gdImageSetPixel(im, ix, iy, nc);
+                       } while(ix++ < (im->sx -1));
+                       ix = x;
                } while(iy++ < (im->sy -1));
                goto done;
        }

Added: php/php-src/branches/PHP_5_3/ext/gd/tests/bug60160.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/gd/tests/bug60160.phpt                     
        (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/gd/tests/bug60160.phpt     2011-11-01 
11:51:53 UTC (rev 318638)
@@ -0,0 +1,26 @@
+--TEST--
+Bug #60160 (imagefill does not work correctly for small images) @see bug51671
+--SKIPIF--
+<?php
+       if(!extension_loaded('gd')){ die('skip gd extension not available'); }
+?>
+--FILE--
+<?php
+$w = 3;
+$h = 50;
+$im = imagecreatetruecolor($w, $h);
+$white = imagecolorallocate($im, 255, 255, 255);
+imagefill($im, 0, 0, $white);
+
+for ($ix = 0; $ix < $w; $ix++) {
+        for ($iy = 0; $iy < $h; $iy++) {
+                if (($c = imagecolorat($im, $ix, $iy)) != $white) {
+                        printf("Failed, ($ix, $iy) is %X\n", $c);
+                }
+        }
+}
+
+echo "OK\n";
+?>
+--EXPECTF--
+OK

Modified: php/php-src/branches/PHP_5_4/ext/gd/libgd/gd.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/gd/libgd/gd.c      2011-11-01 10:25:47 UTC 
(rev 318637)
+++ php/php-src/branches/PHP_5_4/ext/gd/libgd/gd.c      2011-11-01 11:51:53 UTC 
(rev 318638)
@@ -1894,19 +1894,14 @@
        if (im->sx < 4) {
                int ix = x, iy = y, c;
                do {
-                       c = gdImageGetPixel(im, ix, iy);
-                       if (c != oc) {
-                               goto done;
-                       }
-                       gdImageSetPixel(im, ix, iy, nc);
-               } while(ix++ < (im->sx -1));
-               ix = x; iy = y + 1;
-               do {
-                       c = gdImageGetPixel(im, ix, iy);
-                       if (c != oc) {
-                               goto done;
-                       }
-                       gdImageSetPixel(im, ix, iy, nc);
+                       do {
+                               c = gdImageGetPixel(im, ix, iy);
+                               if (c != oc) {
+                                       goto done;
+                               }
+                               gdImageSetPixel(im, ix, iy, nc);
+                       } while(ix++ < (im->sx -1));
+                       ix = x;
                } while(iy++ < (im->sy -1));
                goto done;
        }

Added: php/php-src/branches/PHP_5_4/ext/gd/tests/bug60160.phpt
===================================================================
--- php/php-src/branches/PHP_5_4/ext/gd/tests/bug60160.phpt                     
        (rev 0)
+++ php/php-src/branches/PHP_5_4/ext/gd/tests/bug60160.phpt     2011-11-01 
11:51:53 UTC (rev 318638)
@@ -0,0 +1,26 @@
+--TEST--
+Bug #60160 (imagefill does not work correctly for small images) @see bug51671
+--SKIPIF--
+<?php
+       if(!extension_loaded('gd')){ die('skip gd extension not available'); }
+?>
+--FILE--
+<?php
+$w = 3;
+$h = 50;
+$im = imagecreatetruecolor($w, $h);
+$white = imagecolorallocate($im, 255, 255, 255);
+imagefill($im, 0, 0, $white);
+
+for ($ix = 0; $ix < $w; $ix++) {
+        for ($iy = 0; $iy < $h; $iy++) {
+                if (($c = imagecolorat($im, $ix, $iy)) != $white) {
+                        printf("Failed, ($ix, $iy) is %X\n", $c);
+                }
+        }
+}
+
+echo "OK\n";
+?>
+--EXPECTF--
+OK

Modified: php/php-src/trunk/ext/gd/libgd/gd.c
===================================================================
--- php/php-src/trunk/ext/gd/libgd/gd.c 2011-11-01 10:25:47 UTC (rev 318637)
+++ php/php-src/trunk/ext/gd/libgd/gd.c 2011-11-01 11:51:53 UTC (rev 318638)
@@ -1894,19 +1894,14 @@
        if (im->sx < 4) {
                int ix = x, iy = y, c;
                do {
-                       c = gdImageGetPixel(im, ix, iy);
-                       if (c != oc) {
-                               goto done;
-                       }
-                       gdImageSetPixel(im, ix, iy, nc);
-               } while(ix++ < (im->sx -1));
-               ix = x; iy = y + 1;
-               do {
-                       c = gdImageGetPixel(im, ix, iy);
-                       if (c != oc) {
-                               goto done;
-                       }
-                       gdImageSetPixel(im, ix, iy, nc);
+                       do {
+                               c = gdImageGetPixel(im, ix, iy);
+                               if (c != oc) {
+                                       goto done;
+                               }
+                               gdImageSetPixel(im, ix, iy, nc);
+                       } while(ix++ < (im->sx -1));
+                       ix = x;
                } while(iy++ < (im->sy -1));
                goto done;
        }

Added: php/php-src/trunk/ext/gd/tests/bug60160.phpt
===================================================================
--- php/php-src/trunk/ext/gd/tests/bug60160.phpt                                
(rev 0)
+++ php/php-src/trunk/ext/gd/tests/bug60160.phpt        2011-11-01 11:51:53 UTC 
(rev 318638)
@@ -0,0 +1,26 @@
+--TEST--
+Bug #60160 (imagefill does not work correctly for small images) @see bug51671
+--SKIPIF--
+<?php
+       if(!extension_loaded('gd')){ die('skip gd extension not available'); }
+?>
+--FILE--
+<?php
+$w = 3;
+$h = 50;
+$im = imagecreatetruecolor($w, $h);
+$white = imagecolorallocate($im, 255, 255, 255);
+imagefill($im, 0, 0, $white);
+
+for ($ix = 0; $ix < $w; $ix++) {
+        for ($iy = 0; $iy < $h; $iy++) {
+                if (($c = imagecolorat($im, $ix, $iy)) != $white) {
+                        printf("Failed, ($ix, $iy) is %X\n", $c);
+                }
+        }
+}
+
+echo "OK\n";
+?>
+--EXPECTF--
+OK

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to