about summary refs log tree commit diff
path: root/generator/ppmmake.c
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2014-02-15 19:38:27 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2014-02-15 19:38:27 +0000
commitfce82bced2d7898a2f6d1a4d90b5f522b3505334 (patch)
tree7ca56f63b697c54b92b73bc3915372f2db02a5e2 /generator/ppmmake.c
parentd3c2eecaedfdc3fa6f1bd304c07a705c0d7bb9e5 (diff)
downloadnetpbm-mirror-fce82bced2d7898a2f6d1a4d90b5f522b3505334.tar.gz
netpbm-mirror-fce82bced2d7898a2f6d1a4d90b5f522b3505334.tar.xz
netpbm-mirror-fce82bced2d7898a2f6d1a4d90b5f522b3505334.zip
speedup - compute row only once
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@2126 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'generator/ppmmake.c')
-rw-r--r--generator/ppmmake.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/generator/ppmmake.c b/generator/ppmmake.c
index 9c8a2edb..2d4bbca8 100644
--- a/generator/ppmmake.c
+++ b/generator/ppmmake.c
@@ -58,16 +58,18 @@ parseCommandLine(int argc, char ** argv,
     pm_optParseOptions3(&argc, argv, opt, sizeof(opt), 0);
         /* Uses and sets argc, argv, and some of *cmdlineP and others. */
 
+    free (option_def);
+
     if (!maxvalSpec)
         cmdlineP->maxval = PPM_MAXMAXVAL;
     else {
         if (cmdlineP->maxval > PPM_OVERALLMAXVAL)
             pm_error("The value you specified for -maxval (%u) is too big.  "
                      "Max allowed is %u", cmdlineP->maxval, PPM_OVERALLMAXVAL);
-        
+
         if (cmdlineP->maxval < 1)
             pm_error("You cannot specify 0 for -maxval");
-    }    
+    }
 
     if (argc-1 < 3)
         pm_error("Need 3 arguments: color, width, height.");
@@ -88,7 +90,7 @@ main(int argc, char *argv[]) {
 
     struct cmdlineInfo cmdline;
     pixel * pixrow;
-    unsigned int row;
+    unsigned int row, col;
 
     ppm_init(&argc, argv);
 
@@ -97,12 +99,12 @@ main(int argc, char *argv[]) {
     ppm_writeppminit(stdout, cmdline.cols, cmdline.rows, cmdline.maxval, 0);
     pixrow = ppm_allocrow(cmdline.cols);
 
-    for (row = 0; row < cmdline.rows; ++row) {
-        unsigned int col;
-        for (col = 0; col < cmdline.cols; ++col)
-            pixrow[col] = cmdline.color;
+    /* All rows are identical.  Fill once. */
+    for (col = 0; col < cmdline.cols; ++col)
+        pixrow[col] = cmdline.color;
+
+    for (row = 0; row < cmdline.rows; ++row)
         ppm_writeppmrow(stdout, pixrow, cmdline.cols, cmdline.maxval, 0);
-	}
 
     ppm_freerow(pixrow);
     pm_close(stdout);