about summary refs log tree commit diff
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2023-08-18 19:35:40 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2023-08-18 19:35:40 +0000
commit0625b9c35ba5ee745846387db8a0857190263d5d (patch)
tree605ae7e6afc902e0ecc97f6c1710d7fa0d238c72
parentafa13983a4b50d67a45f4793c51eae837fb0fdd4 (diff)
downloadnetpbm-mirror-0625b9c35ba5ee745846387db8a0857190263d5d.tar.gz
netpbm-mirror-0625b9c35ba5ee745846387db8a0857190263d5d.tar.xz
netpbm-mirror-0625b9c35ba5ee745846387db8a0857190263d5d.zip
Release 11.03.03
git-svn-id: http://svn.code.sf.net/p/netpbm/code/advanced@4599 9d0c8265-081b-0410-96cb-a4ca84ce46f8
-rw-r--r--doc/HISTORY12
-rwxr-xr-xeditor/ppmfade74
-rw-r--r--other/pamstack.c5
-rw-r--r--version.mk2
4 files changed, 55 insertions, 38 deletions
diff --git a/doc/HISTORY b/doc/HISTORY
index ed980251..6afec411 100644
--- a/doc/HISTORY
+++ b/doc/HISTORY
@@ -4,6 +4,18 @@ Netpbm.
 CHANGE HISTORY 
 --------------
 
+not yet  BJH  Release 11.03.03
+
+              ppmfade: fix "file not found" crash for most fade modes.
+              Introduced in Netpbm 10.98 (March 2022).
+
+              ppmfade: fix incorrect block mode fade.  Always broken
+              (ppmfade was new in Netpbm 8.4 (April 2000)).
+
+              pamstack: Fail gracefully when total number of planes is too
+              large for unsigned integer.  Always broken (Pamstack was new in
+              Netpbm 10.0 (June 2002).
+
 23.08.05 BJH  Release 11.03.02
 
               Fix -lcmmaxval fix in 11.03.01.
diff --git a/editor/ppmfade b/editor/ppmfade
index 7dc533a1..7a346ddd 100755
--- a/editor/ppmfade
+++ b/editor/ppmfade
@@ -212,84 +212,84 @@ for ($i = 1; $i <= $nframes; $i++) {
             $n = $spline20[$i] * 100;
             system("ppmshift $n $tmpdir/junk1.ppm >$tmpdir/junk1a.ppm");
             $n = (1-$spline20[$i-10])*100;
-            system("ppmshift $n junk2.ppm >junk2a.ppm");
+            system("ppmshift $n $tmpdir/junk2.ppm >$tmpdir/junk2a.ppm");
             $n = $spline10[$i-10];
-            system("ppmmix $n junk1a.ppm junk2a.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk1a.ppm $tmpdir/junk2a.ppm >$tmpdir/junk3.ppm");
         } else {
             my $n = (1-$spline20[$i-10]) * 100;
-            system("ppmshift $n junk2.ppm >junk3.ppm");
+            system("ppmshift $n $tmpdir/junk2.ppm >$tmpdir/junk3.ppm");
         }
     } elsif ($mode eq $RELIEF) {
         if ($i == 1) {
-            system("ppmrelief junk1.ppm >junk1r.ppm");
+            system("ppmrelief $tmpdir/junk1.ppm >$tmpdir/junk1r.ppm");
         }
         if ($i <= 10) {
             my $n = $spline10[$i];
-            system("ppmmix $n junk1.ppm junk1r.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk1.ppm $tmpdir/junk1r.ppm >$tmpdir/junk3.ppm");
         } elsif ($i <= 20) {
             my $n = $spline10[$i-10];
-            system("ppmmix $n junk1r.ppm junk2r.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk1r.ppm $tmpdir/junk2r.ppm >$tmpdir/junk3.ppm");
         } else {
             my $n = $spline10[$i-20];
-            system("ppmmix $n junk2r.ppm junk2.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk2r.ppm $tmpdir/junk2.ppm >$tmpdir/junk3.ppm");
         }
         if ($i == 10) {
-            system("ppmrelief junk2.ppm >junk2r.ppm");
+            system("ppmrelief $tmpdir/junk2.ppm >$tmpdir/junk2r.ppm");
         }
     } elsif ($mode eq $OIL) {
         if ($i == 1) {
-            system("ppmtopgm junk1.ppm | pgmoil >junko.ppm");
-            system("rgb3toppm junko.ppm junko.ppm junko.ppm " .
-                   ">junk1o.ppm");
+            system("ppmtopgm $tmpdir/junk1.ppm | pgmoil >$tmpdir/junko.ppm");
+            system("rgb3toppm $tmpdir/junko.ppm $tmpdir/junko.ppm $tmpdir/junko.ppm " .
+                   ">$tmpdir/junk1o.ppm");
         }
         if ($i <= 10) {
             my $n = $spline10[$i];
-            system("ppmmix $n junk1.ppm junk1o.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk1.ppm $tmpdir/junk1o.ppm >$tmpdir/junk3.ppm");
         } elsif ($i <= 20) {
             my $n = $spline10[$i-10];
-            system("ppmmix $n junk1o.ppm junk2o.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk1o.ppm $tmpdir/junk2o.ppm >$tmpdir/junk3.ppm");
         } else {
             my $n = $spline10[$i-20];
-            system("ppmmix $n junk2o.ppm junk2.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk2o.ppm $tmpdir/junk2.ppm >$tmpdir/junk3.ppm");
         }
         if ($i == 10) {
-            system("ppmtopgm junk2.ppm | pgmoil >junko.ppm");
-            system("rgb3toppm junko.ppm junko.ppm junko.ppm " .
-                   ">junk2o.ppm");
+            system("ppmtopgm $tmpdir/junk2.ppm | pgmoil >$tmpdir/junko.ppm");
+            system("rgb3toppm $tmpdir/junko.ppm $tmpdir/junko.ppm $tmpdir/junko.ppm " .
+                   ">$tmpdir/junk2o.ppm");
         }
     } elsif ($mode eq $EDGE) {
         if ($i == 1) {
-            system("ppmtopgm junk1.ppm | pgmedge >junko.ppm");
-            system("rgb3toppm junko.ppm junko.ppm junko.ppm " .
-                   ">junk1o.ppm");
+            system("ppmtopgm $tmpdir/junk1.ppm | pgmedge >$tmpdir/junko.ppm");
+            system("rgb3toppm $tmpdir/junko.ppm $tmpdir/junko.ppm $tmpdir/junko.ppm " .
+                   ">$tmpdir/junk1o.ppm");
         }
         if ($i <= 10) {
             my $n = $spline10[$i];
-            system("ppmmix $n junk1.ppm junk1o.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk1.ppm $tmpdir/junk1o.ppm >$tmpdir/junk3.ppm");
         } elsif ($i <= 20) {
             my $n = $spline10[$i-10];
-            system("ppmmix $n junk1o.ppm junk2o.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk1o.ppm $tmpdir/junk2o.ppm >$tmpdir/junk3.ppm");
         } else {
             my $n = $spline10[$i-20];
-            system("ppmmix $n junk2o.ppm junk2.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk2o.ppm $tmpdir/junk2.ppm >$tmpdir/junk3.ppm");
         }
         if ($i == 10) {
-            system("ppmtopgm junk2.ppm | pgmedge >junko.ppm");
-            system("rgb3toppm junko.ppm junko.ppm junko.ppm " .
-                   ">junk2o.ppm");
+            system("ppmtopgm $tmpdir/junk2.ppm | pgmedge >$tmpdir/junko.ppm");
+            system("rgb3toppm $tmpdir/junko.ppm $tmpdir/junko.ppm $tmpdir/junko.ppm " .
+                   ">$tmpdir/junk2o.ppm");
         } 
     } elsif ($mode eq $BENTLEY) {
         if ($i == 1) {
-            system("ppmtopgm junk1.ppm | pgmbentley >junko.ppm");
-            system("rgb3toppm junko.ppm junko.ppm junko.ppm " .
-                   ">junk1o.ppm");
+            system("ppmtopgm $tmpdir/junk1.ppm | pgmbentley >$tmpdir/junko.ppm");
+            system("rgb3toppm $tmpdir/junko.ppm $tmpdir/junko.ppm $tmpdir/junko.ppm " .
+                   ">$tmpdir/junk1o.ppm");
         }
         if ($i <= 10) {
             my $n = $spline10[$i];
-            system("ppmmix $n junk1.ppm junk1o.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk1.ppm $tmpdir/junk1o.ppm >$tmpdir/junk3.ppm");
         } elsif ($i <= 20) {
             my $n = $spline10[$i-10];
-            system("ppmmix $n junk1o.ppm junk2o.ppm >junk3.ppm");
+            system("ppmmix $n $tmpdir/junk1o.ppm $tmpdir/junk2o.ppm >$tmpdir/junk3.ppm");
         } else {
             my $n = $spline10[$i-20];
             system("ppmmix $n $tmpdir/junk2o.ppm $tmpdir/junk2.ppm " .
@@ -308,6 +308,12 @@ for ($i = 1; $i <= $nframes; $i++) {
             system("pamscale $n $tmpdir/junk1.ppm | " .
                    "pamscale -width $width -height $height " .
                    ">$tmpdir/junk3.ppm");
+            if ($i == 10) {
+                   system("cp", "$tmpdir/junk3.ppm", "$tmpdir/junk1a.ppm");
+                   system("pamscale $n $tmpdir/junk2.ppm | " .
+                          "pamscale -width $width -height $height " .
+                          ">$tmpdir/junk2a.ppm");
+               }
         } elsif ($i <= 20) {
             my $n = $spline10[$i-10];
             system("ppmmix $n $tmpdir/junk1a.ppm $tmpdir/junk2a.ppm " .
@@ -318,12 +324,6 @@ for ($i = 1; $i <= $nframes; $i++) {
                    "pamscale -width $width -height $height " .
                    ">$tmpdir/junk3.ppm");
         }
-        if ($i == 10) {
-            system("cp", "$tmpdir/junk3.ppm", "$tmpdir/junk1a.ppm");
-            system("pamscale $n $tmpdir/junk2.ppm | " .
-                   "pamscale -width $width -height $height " .
-                   ">$tmpdir/junk2a.ppm");
-        }    
     } elsif ($mode eq $MIX) {
         my $fade_factor = sqrt(1/($nframes-$i+1));
         system("ppmmix $fade_factor $tmpdir/junk1.ppm $tmpdir/junk2.ppm " .
diff --git a/other/pamstack.c b/other/pamstack.c
index 285e02c0..533795ca 100644
--- a/other/pamstack.c
+++ b/other/pamstack.c
@@ -242,6 +242,11 @@ processOneImageInAllStreams(unsigned int       const nInput,
         maxvalLcm = pm_lcm(maxvalLcm + 1, inpam[inputSeq].maxval + 1, 1,
                            PAM_OVERALL_MAXVAL + 1) - 1;
 
+        if (inpam[inputSeq].depth > UINT_MAX - outputDepth)
+            pm_error("Total number of planes is too large to compute "
+                     "(at least %u plus %u)",
+                     outputDepth, inpam[inputSeq].depth);
+
         outputDepth += inpam[inputSeq].depth;
     }
 
diff --git a/version.mk b/version.mk
index 19c58603..9076e495 100644
--- a/version.mk
+++ b/version.mk
@@ -1,3 +1,3 @@
 NETPBM_MAJOR_RELEASE = 11
 NETPBM_MINOR_RELEASE = 3
-NETPBM_POINT_RELEASE = 2
+NETPBM_POINT_RELEASE = 3