pspp-dump-sav: Dump labels longer than 255 bytes.
authorBen Pfaff <blp@cs.stanford.edu>
Wed, 19 Mar 2014 03:49:35 +0000 (20:49 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Wed, 19 Mar 2014 03:49:54 +0000 (20:49 -0700)
utilities/pspp-dump-sav.c

index e58bc254ec1d1f7696a4099ae8d679bb8229b2e0..c194f230500fbdf7c5c52d7a6778651e8f412ae6 100644 (file)
@@ -444,18 +444,16 @@ read_variable_record (struct sfm_reader *r)
   if (has_variable_label == 1)
     {
       long long int offset = ftello (r->file);
-      size_t len, read_len;
-      char label[255 + 1];
+      size_t len;
+      char *label;
 
       len = read_int (r);
 
       /* Read up to 255 bytes of label. */
-      read_len = MIN (sizeof label - 1, len);
-      read_string (r, label, read_len + 1);
+      label = xmalloc (len + 1);
+      read_string (r, label, len + 1);
       printf("\t%08llx Variable label: \"%s\"\n", offset, label);
-
-      /* Skip unread label bytes. */
-      skip_bytes (r, len - read_len);
+      free (label);
 
       /* Skip label padding up to multiple of 4 bytes. */
       skip_bytes (r, ROUND_UP (len, 4) - len);