diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2010-08-09 14:09:23 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2010-08-09 14:09:23 +0000 |
commit | 444320669366ce8ba982609e9f16432fdd1314ab (patch) | |
tree | 572a153878886b64d3ec5b60c4660b553233297f /editor/pamrecolor.c | |
parent | 07fcb08fe8fa831949cabf72c1f840fb8c880916 (diff) | |
download | netpbm-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.c | 24 |
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); |