about summary refs log tree commit diff
path: root/editor/pamrecolor.c
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2010-08-09 14:09:23 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2010-08-09 14:09:23 +0000
commit444320669366ce8ba982609e9f16432fdd1314ab (patch)
tree572a153878886b64d3ec5b60c4660b553233297f /editor/pamrecolor.c
parent07fcb08fe8fa831949cabf72c1f840fb8c880916 (diff)
downloadnetpbm-mirror-444320669366ce8ba982609e9f16432fdd1314ab.tar.gz
netpbm-mirror-444320669366ce8ba982609e9f16432fdd1314ab.tar.xz
netpbm-mirror-444320669366ce8ba982609e9f16432fdd1314ab.zip
Fix crash with -colorfile
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@1276 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'editor/pamrecolor.c')
-rw-r--r--editor/pamrecolor.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/editor/pamrecolor.c b/editor/pamrecolor.c
index e6441ae4..04f2478f 100644
--- a/editor/pamrecolor.c
+++ b/editor/pamrecolor.c
@@ -451,8 +451,8 @@ main(int argc, const char *argv[]) {
     const char *       comments;
     tuplen *           inRow;
     tuplen *           outRow;
-    tuplen *           colorRow;
     tuplen **          colorData;
+    tuplen *           colorRowBuffer;
     unsigned int       row;
 
     pm_proginit(&argc, argv);
@@ -486,21 +486,24 @@ main(int argc, const char *argv[]) {
 
     inRow = pnm_allocpamrown(&inPam);
     outRow = pnm_allocpamrown(&outPam);
-    if (cmdline.colorfile)
-        colorRow = NULL;
-    else
-        colorRow = pnm_allocpamrown(&outPam);
+
+    colorRowBuffer = pnm_allocpamrown(&outPam);
 
     for (row = 0; row < inPam.height; ++row) {
+        tuplen * colorRow;
+
         pnm_readpamrown(&inPam, inRow);
 
         if (cmdline.colorfile)
             colorRow = getColorRow(&colorPam, colorData, row, outPam.width);
-        else if (cmdline.targetcolorSpec)
-            explicitlyColorRow(&colorPam, colorRow, cmdline.targetcolor);
-        else
-            randomlyColorRow(&colorPam, colorRow);
+        else {
+            colorRow = colorRowBuffer;
 
+            if (cmdline.targetcolorSpec)
+                explicitlyColorRow(&colorPam, colorRow, cmdline.targetcolor);
+            else
+                randomlyColorRow(&colorPam, colorRow);
+        }
         recolorRow(&inPam, inRow,
                    &cmdline.color2gray, colorRow,
                    &outPam, outRow);
@@ -508,8 +511,7 @@ main(int argc, const char *argv[]) {
     }
     pnm_freepamrown(outRow);
     pnm_freepamrown(inRow);
-    if (colorRow)
-        pnm_freepamrown(colorRow);
+    pnm_freepamrown(colorRowBuffer);
 
     if (colorData)
         pnm_freepamarrayn(colorData, &colorPam);