message: Consistently initialize locator; use 0 for "no line number".
[pspp] / src / data / data-in.c
index 63e644c186bf565168a7f6e199c4bc707f7ae7cf..480d335a9c086b007f01b0a9efcde1b516e2bf0e 100644 (file)
@@ -119,6 +119,7 @@ data_in (struct substring input, const char *encoding,
 
   struct data_in i;
 
+  char *s = NULL;
   bool ok;
 
   assert ((width != 0) == fmt_is_string (format));
@@ -146,7 +147,7 @@ data_in (struct substring input, const char *encoding,
   else
     {
       const char *dest_encoding;
-      char *s = NULL;
+
       if ( dict == NULL)
        {
          assert (0 == (fmt_get_category (format) & (FMT_CAT_BINARY | FMT_CAT_STRING)));
@@ -156,15 +157,14 @@ data_in (struct substring input, const char *encoding,
        dest_encoding = dict_get_encoding (dict);
 
       s = recode_string (dest_encoding, i.src_enc, ss_data (input), ss_length (input));
-      ss_alloc_uninit (&i.input, strlen (s));
-      memcpy (ss_data (i.input), s, ss_length (input));
-      free (s);
+      i.input = ss_cstr (s);
     }
 
   ok = handlers[i.format] (&i);
   if (!ok)
     default_result (&i);
 
+  free (s);
   return ok;
 }
 
@@ -873,7 +873,7 @@ parse_trailer (struct data_in *i)
   if (ss_is_empty (i->input))
     return true;
 
-  data_warning (i, _("Trailing garbage \"%.*s\" following date."),
+  data_warning (i, _("Trailing garbage `%.*s' following date."),
               (int) ss_length (i->input), ss_data (i->input));
   return false;
 }
@@ -1203,7 +1203,7 @@ vdata_warning (const struct data_in *i, const char *format, va_list args)
   m.severity = MSG_S_WARNING;
   m.text = ds_cstr (&text);
   m.where.file_name = NULL;
-  m.where.line_number = -1;
+  m.where.line_number = 0;
 
   msg_emit (&m);
 }