about summary refs log tree commit diff
path: root/editor/pamcut.c
diff options
context:
space:
mode:
Diffstat (limited to 'editor/pamcut.c')
-rw-r--r--editor/pamcut.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/editor/pamcut.c b/editor/pamcut.c
index 31b44f81..b6190098 100644
--- a/editor/pamcut.c
+++ b/editor/pamcut.c
@@ -699,8 +699,9 @@ extractRowsGen(const struct pam * const inpamP,
     destroyRowCutter(rowCutterP);
 
     /* Write out bottom padding */
-    if (bottomrow > inpamP->height-1)
-        writeBlackRows(outpamP, bottomrow - (inpamP->height-1));
+    if (bottomrow >= inpamP->height)
+        writeBlackRows(outpamP, bottomrow - MAX(inpamP->height, toprow) + 1);
+
 }
 
 
@@ -758,14 +759,16 @@ extractRowsPbm(const struct pam * const inpamP,
     }
 
     bitrow = pbm_allocrow_packed(totalWidth);
-
-    makeBlackPbmRow(bitrow, totalWidth);
       /* Initialize row buffer to all black for top and side padding */
 
     /* Write out top padding */
-    for (row = toprow; row < MIN(0, bottomrow+1); ++row)
-        pbm_writepbmrow_packed(outpamP->file, bitrow, outpamP->width, 0);
+    if (toprow < 0) {
+        makeBlackPbmRow(bitrow, outpamP->width);
+        for (row = toprow; row < MIN(0, bottomrow+1); ++row)
+            pbm_writepbmrow_packed(outpamP->file, bitrow, outpamP->width, 0);
+    }
 
+    makeBlackPbmRow(bitrow, totalWidth);
     for (row = 0; row < inpamP->height; ++row){
         if (row >= toprow && row <= bottomrow) {
             pbm_readpbmrow_bitoffset(inpamP->file, bitrow, inpamP->width,
@@ -783,9 +786,11 @@ extractRowsPbm(const struct pam * const inpamP,
     }
 
     /* Write out bottom padding */
-    makeBlackPbmRow(bitrow, outpamP->width);
-    for (row = MAX(inpamP->height, toprow); row < bottomrow+1; ++row)
-        pbm_writepbmrow_packed(outpamP->file, bitrow, outpamP->width, 0);
+    if (bottomrow >= inpamP->height) {
+        makeBlackPbmRow(bitrow, outpamP->width);
+        for (row = MAX(inpamP->height, toprow); row < bottomrow+1; ++row)
+             pbm_writepbmrow_packed(outpamP->file, bitrow, outpamP->width, 0);
+    }
 
     pbm_freerow_packed(bitrow);
 }