about summary refs log tree commit diff
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2008-08-13 15:36:18 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2008-08-13 15:36:18 +0000
commitfbedc8c762da4ad527b4bd695473606b4b38d412 (patch)
treef180cae889cd8390687b7695b7b1225c061e6f92
parent1f0f4a30e3b27653821ffa4347694619320dce6a (diff)
downloadnetpbm-mirror-fbedc8c762da4ad527b4bd695473606b4b38d412.tar.gz
netpbm-mirror-fbedc8c762da4ad527b4bd695473606b4b38d412.tar.xz
netpbm-mirror-fbedc8c762da4ad527b4bd695473606b4b38d412.zip
Release 10.35.49
git-svn-id: http://svn.code.sf.net/p/netpbm/code/stable@705 9d0c8265-081b-0410-96cb-a4ca84ce46f8
-rw-r--r--Makefile.version2
-rw-r--r--doc/HISTORY5
-rw-r--r--editor/pamcut.c21
3 files changed, 18 insertions, 10 deletions
diff --git a/Makefile.version b/Makefile.version
index 51a256c3..8b73e929 100644
--- a/Makefile.version
+++ b/Makefile.version
@@ -1,3 +1,3 @@
 NETPBM_MAJOR_RELEASE = 10
 NETPBM_MINOR_RELEASE = 35
-NETPBM_POINT_RELEASE = 48
+NETPBM_POINT_RELEASE = 49
diff --git a/doc/HISTORY b/doc/HISTORY
index 35f7082e..c23298fc 100644
--- a/doc/HISTORY
+++ b/doc/HISTORY
@@ -4,6 +4,11 @@ Netpbm.
 CHANGE HISTORY 
 --------------
 
+08.08.13 BJH  Release 10.35.49
+
+              pamcut: don't crash when cutting a region entirely to the
+              left or right of the input image, with -pad.
+
 08.07.27 BJH  Release 10.35.48
 
               pamperspective: change calculation of window height to avoid
diff --git a/editor/pamcut.c b/editor/pamcut.c
index d5de45fb..7d95fa0a 100644
--- a/editor/pamcut.c
+++ b/editor/pamcut.c
@@ -426,12 +426,12 @@ createRowCutter(struct pam *        const inpamP,
     MALLOCARRAY_NOFAIL(outputPointers, outpamP->width);
 
     /* Put in left padding */
-    for (col = leftcol; col < 0; ++col)
+    for (col = leftcol; col < 0 && col-leftcol < outpamP->width; ++col)
         outputPointers[col-leftcol] = blackTuple;
- 
+
     /* Put in extracted columns */
-    for (col = MAX(leftcol, 0); 
-         col <= MIN(rightcol, inpamP->width-1); 
+    for (col = MAX(leftcol, 0);
+         col <= MIN(rightcol, inpamP->width-1);
          ++col) {
         int const outcol = col - leftcol;
 
@@ -439,15 +439,18 @@ createRowCutter(struct pam *        const inpamP,
     }
 
     /* Put in right padding */
-    for (col = MIN(rightcol, inpamP->width-1) + 1; col <= rightcol; ++col)
-        outputPointers[col-leftcol] = blackTuple;
-    
+    for (col = MIN(rightcol, inpamP->width-1) + 1; col <= rightcol; ++col) {
+        if (col - leftcol >= 0) {
+            outputPointers[col-leftcol] = blackTuple;
+        }
+    }
+
     /* Direct input pixels that are getting cut off to the discard tuple */
 
-    for (col = 0; col < leftcol; ++col)
+    for (col = 0; col < MIN(leftcol, inpamP->width); ++col)
         inputPointers[col] = discardTuple;
 
-    for (col = rightcol + 1; col < inpamP->width; ++col)
+    for (col = MAX(0, rightcol + 1); col < inpamP->width; ++col)
         inputPointers[col] = discardTuple;
 
     MALLOCVAR_NOFAIL(rowCutterP);