Fix segfault.
authorBen Pfaff <blp@gnu.org>
Sun, 7 May 2006 05:26:03 +0000 (05:26 +0000)
committerBen Pfaff <blp@gnu.org>
Sun, 7 May 2006 05:26:03 +0000 (05:26 +0000)
src/language/data-io/ChangeLog
src/language/data-io/list.q

index dc6a346ac5737f9c2b8fa386ed46ac43fc901f8b..422e6a6c79dc4473fd07213d7337e3f8eb20981a 100644 (file)
@@ -1,3 +1,10 @@
+Sat May  6 22:25:09 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix segfault.
+       
+       * list.q (write_fallback_headers): (write_fallback_headers)
+       Properly record width of leader and pass it to write_varname().
+
 Sat May  6 19:03:13 2006  Ben Pfaff  <blp@gnu.org>
 
        * get.c: (mtf_merge_dictionary) Fix value label memory leak.
index d8df19cb17cdaa2f55fa6446591489deb5913d87..b1bb9aadf05d35c3724af8453a507f8d6e23fe0c 100644 (file)
@@ -438,6 +438,7 @@ write_fallback_headers (struct outp_driver *d)
   while (index < cmd.n_variables)
     {
       struct outp_text text;
+      int leader_width;
 
       /* Ensure that there is enough room for a line of text. */
       if (d->cp_y + d->font_height > d->length)
@@ -452,7 +453,8 @@ write_fallback_headers (struct outp_driver *d)
       text.y = d->cp_y;
       text.h = text.v = INT_MAX;
       d->class->text_draw (d, &text);
-      d->class->text_metrics (d, &text, &d->cp_x, NULL);
+      d->class->text_metrics (d, &text, &leader_width, NULL);
+      d->cp_x = leader_width;
 
       goto entry;
       do
@@ -473,9 +475,10 @@ write_fallback_headers (struct outp_driver *d)
          }
          
          {
-           char varname[10];
-           sprintf (varname, " %s", cmd.v_variables[index]->name);
-           write_varname (d, varname, text.h);
+           char varname[LONG_NAME_LEN + 2];
+           snprintf (varname, sizeof varname,
+                      " %s", cmd.v_variables[index]->name);
+           write_varname (d, varname, leader_width);
          }
        }
       while (++index < cmd.n_variables);