- i_box_cfill() went into an infinite loop on fountain fills
authorTony Cook <tony@develop=help.com>
Sat, 30 Mar 2002 13:59:13 +0000 (13:59 +0000)
committerTony Cook <tony@develop=help.com>
Sat, 30 Mar 2002 13:59:13 +0000 (13:59 +0000)
          or fills on images with more than 8-bits/sample

Changes
draw.c
t/t20fill.t

diff --git a/Changes b/Changes
index 30775a2..77e8ad4 100644 (file)
--- a/Changes
+++ b/Changes
@@ -617,6 +617,8 @@ Revision history for Perl extension Imager.
         - handle the presence of the default broken giflib better,
           by giving them some more prose about the problem, and skipping
           all but the first test that fails with the broken giflib
+        - i_box_cfill() went into an infinite loop on fountain fills
+          or fills on images with more than 8-bits/sample
 
 =================================================================
 
diff --git a/draw.c b/draw.c
index 68ada4f..882c9b3 100644 (file)
--- a/draw.c
+++ b/draw.c
@@ -413,6 +413,7 @@ i_box_cfill(i_img *im,int x1,int y1,int x2,int y2,i_fill_t *fill) {
         (fill->fill_with_fcolor)(fill, x1, y1, x2-x1, im->channels, line);
       }
       i_plinf(im, x1, x2, y1, line);
+      ++y1;
     }
     myfree(line);
     if (work)
index 39c6edf..45ac766 100644 (file)
@@ -1,7 +1,7 @@
 #!perl -w
 use strict;
 
-print "1..39\n";
+print "1..40\n";
 
 use Imager ':handy';
 use Imager::Fill;
@@ -240,6 +240,22 @@ ok($testnum++,
    $oocopy->errstr =~ /Unknown hatch type/,
    "error message for automatic fill conversion");
 
+# previous box fills to float images, or using the fountain fill
+# got into a loop here
+{
+  local $SIG{ALRM} = sub { die; };
+
+  eval {
+    alarm(2);
+    ok($testnum,
+       $ooim->box(xmin=>20, ymin=>20, xmax=>80, ymax=>40,
+                  fill=>{ fountain=>'linear', xa=>20, ya=>20, xb=>80, 
+                          yb=>20 }), "linear box fill");
+    ++$testnum;
+  };
+  $@ and ok($testnum++, 0, "linear box fill alarmed");
+}
+
 sub ok ($$$) {
   my ($num, $test, $desc) = @_;