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 14:53:35 +0000 (07:53 -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 d4a5ccab6c2fff527e70e8ed4a55cc68f120a64e..8bcad4947eee31d63e09264daf960e0d0f8a1008 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 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
@@ -203,7 +203,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 0f183208a2486ac5c4e07c4fd325b4bbf6a12d6d..b567370c2780222dfe8e5c8fb548601e90a32fd3 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 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
@@ -98,12 +98,8 @@ hist_draw_bar(struct chart *ch, const gsl_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);
   }
 }