chart: Fix format string issues in draw_tick callers.
authorBen Pfaff <blp@gnu.org>
Thu, 2 Jul 2009 03:56:17 +0000 (20:56 -0700)
committerBen Pfaff <blp@gnu.org>
Thu, 2 Jul 2009 03:56:17 +0000 (20:56 -0700)
The 'label' argument to draw_tick is used as a printf-type format string,
so callers must pass "%s" to safely use an arbitrary string as a label.

Also, hist_draw_bar was doing its own snprintf, but this commit changes it
to take advantage of that provided by draw_tick.

src/output/charts/barchart.c
src/output/charts/box-whisker.c
src/output/charts/plot-chart.h
src/output/charts/plot-hist.c

index 96cd07fb055aa004ca694dc142bfb4ba59dc9ad5..f3b10011cc959700a156d8b042f820aa9c07f246 100644 (file)
@@ -141,7 +141,7 @@ draw_barchart(struct chart *ch, const char *title,
 
       pl_savestate_r(ch->lp);
 
-      draw_tick (ch, TICK_ABSCISSA, x + (interval_size/2 ),
+      draw_tick (ch, TICK_ABSCISSA, x + (interval_size/2 ), "%s",
                 cat_labels[i]);
 
       for(sc = 0 ; sc < SUB_CATAGORIES ; ++sc )
index c3641580e0511d66a0a293819c8b6f065a53f96d..33c445b09a61b0ef36714272bd221bfd2cd9f741 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2004, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2008, 2009 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -147,7 +147,7 @@ boxplot_draw_boxplot (struct chart *ch,
     }
 
   /* Draw  tick  mark on x axis */
-  draw_tick(ch, TICK_ABSCISSA, box_centre - ch->data_left, name);
+  draw_tick(ch, TICK_ABSCISSA, box_centre - ch->data_left, "%s", name);
 
   pl_restorestate_r(ch->lp);
 }
index f29b4a35d1d74280325bedf0d10941cfbdcdfff1..9a4df52052392cf1769dc1d2bade682a95af1e18 100644 (file)
@@ -52,7 +52,8 @@ enum tick_orientation
 void draw_tick(struct chart *chart,
          enum tick_orientation orientation,
          double position,
-              const char *label, ...);
+              const char *label, ...)
+  PRINTF_FORMAT (4, 5);
 
 
 /* Write the title on a chart*/
index abe2908888cbb276784d402b2aa2d5e099466160..b90d57ac3cb01df951fe52e04f1381871c0b8423 100644 (file)
@@ -112,12 +112,8 @@ hist_draw_bar (struct chart *ch, const struct histogram *hist, int bar)
 
     pl_restorestate_r (ch->lp);
 
-    {
-      char buf[5];
-      snprintf (buf,5,"%g", (upper + lower) / 2.0);
-      draw_tick (ch, TICK_ABSCISSA,
-               x_pos + width / 2.0, buf);
-    }
+    draw_tick (ch, TICK_ABSCISSA,
+               x_pos + width / 2.0, "%g", (upper + lower) / 2.0);
   }
 }