lexer: Change the functions for retrieving token strings.
[pspp-builds.git] / src / language / lexer / value-parser.c
index c2020d36581bf9263cbf366884aa2071c4643f17..4ef092de3a3e6c884e3c236e2d159b19023eed01 100644 (file)
@@ -103,9 +103,13 @@ parse_number (struct lexer *lexer, double *x, const enum fmt_type *format)
   else if (lex_is_string (lexer) && format != NULL)
     {
       union value v;
-      assert (! (fmt_get_category (*format) & ( FMT_CAT_STRING )));
-      data_in (ds_ss (lex_tokstr (lexer)), LEGACY_NATIVE, *format, 0, 0,
-               NULL, &v, 0);
+
+      assert (fmt_get_category (*format) != FMT_CAT_STRING);
+
+      if (!data_in_msg (lex_tokss (lexer), LEGACY_NATIVE,
+                        *format, &v, 0, NULL))
+        return false;
+
       lex_get (lexer);
       *x = v.f;
       if (*x == SYSMIS)
@@ -139,7 +143,12 @@ parse_value (struct lexer *lexer, union value *v, int width)
     }
   else if (lex_force_string (lexer))
     {
-      const char *s = ds_cstr (lex_tokstr (lexer));
+      const char *s;
+
+      if (!lex_force_string (lexer))
+       return false;
+
+      s = lex_tokcstr (lexer);
       value_copy_str_rpad (v, width, CHAR_CAST_BUG (const uint8_t *, s), ' ');
     }
   else