Fixed bug #17420 (table columns exceeded with /FORMAT=nolabels )
authorJohn Darrington <john@darrington.wattle.id.au>
Fri, 22 Dec 2006 10:24:18 +0000 (10:24 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Fri, 22 Dec 2006 10:24:18 +0000 (10:24 +0000)
src/language/stats/ChangeLog
src/language/stats/frequencies.q
tests/automake.mk

index 05cba5c35aa5d81aa0ef46d868db5707b144b97b..6b0c3e63b8b38ead58369eaf4a6b59c6c76e4d71 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 22 19:22:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * frequencies.q : Fixed bug #17420, where the table bounds were overun
+       when /FORMAT=nolabels was given.
+
 Wed Dec 20 18:45:31 WST 2006 John Darrington <john@darrington.wattle.id.au>
 
        * binomial.c binomial.h : New files.  Thanks to Jason Stover 
index 535e69070f8e2761d09c7ef245f6475a68d5af57..506d7ca320b8f00b5bcf690c58e619487a3f47ee 100644 (file)
@@ -1100,13 +1100,19 @@ compare_freq_alpha_d (const void *a_, const void *b_, const void *v_)
 static void
 full_dim (struct tab_table *t, struct outp_driver *d)
 {
-  int lab = cmd.labels == FRQ_LABELS;
-  int i;
+  int i = 0;
+  int columns = 5;
 
-  if (lab)
+  if (cmd.labels == FRQ_LABELS)
+    {
     t->w[0] = MIN (tab_natural_width (t, d, 0), d->prop_em_width * 15);
-  for (i = lab; i < lab + 5; i++)
+      i = 1;
+      columns ++;
+    }
+
+  for (;i < columns; i++)
     t->w[i] = MAX (tab_natural_width (t, d, i), d->prop_em_width * 8);
+
   for (i = 0; i < t->nr; i++)
     t->h[i] = d->font_height;
 }
@@ -1148,7 +1154,7 @@ dump_full (struct variable *v)
     {-1, -1, NULL},
   };
 
-  int lab = cmd.labels == FRQ_LABELS;
+  const bool lab = (cmd.labels == FRQ_LABELS);
 
   vf = get_var_freqs (v);
   ft = &vf->tab;
@@ -1159,8 +1165,9 @@ dump_full (struct variable *v)
 
   if (lab)
     tab_text (t, 0, 1, TAB_CENTER | TAT_TITLE, _("Value Label"));
+
   for (p = vec; p->s; p++)
-    tab_text (t, p->c - (p->r ? !lab : 0), p->r,
+    tab_text (t, lab ? p->c : p->c - 1, p->r,
                  TAB_CENTER | TAT_TITLE, gettext (p->s));
 
   r = 2;
@@ -1176,11 +1183,6 @@ dump_full (struct variable *v)
 
       if (lab)
        {
-#if 0
-<<<<<<< frequencies.q
-         const char *label = val_labs_find (v->val_labs, f->value[0]);
-=======
-#endif
          const char *label = var_lookup_value_label (v, &f->value[0]);
          if (label != NULL)
            tab_text (t, 0, r, TAB_LEFT, label);
index 947dc4456531c2683c2d187ed7406a90f3eb065d..72481b631a4df6fabbdc0ad7380d820ae06beff8 100644 (file)
@@ -91,6 +91,7 @@ TESTS = \
        tests/bugs/get.sh \
        tests/bugs/examine-1sample.sh \
        tests/bugs/examine-missing.sh \
+       tests/bugs/freq-nolabels.sh \
        tests/bugs/get-no-file.sh \
        tests/bugs/html-frequency.sh \
        tests/bugs/if_crash.sh \