Ensure that NUMERIC's format (if any) is a valid output format.
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 9 May 2009 00:43:35 +0000 (08:43 +0800)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 9 May 2009 00:43:35 +0000 (08:43 +0800)
Thanks to Pascal Barbedor for reporting this problem.

src/language/dictionary/numeric.c

index 5c64b948488d2fa8b4aedebd4dca15e69a87ab95..5fa77541b24791aa7d309e5500a6744d4d758b7a 100644 (file)
@@ -43,12 +43,12 @@ cmd_numeric (struct lexer *lexer, struct dataset *ds)
   char **v;
   size_t nv;
 
-  /* Format spec for variables to create.  f.type==-1 if default is to
-     be used. */
-  struct fmt_spec f;
-
   do
     {
+      /* Format spec for variables to create.  f.type==-1 if default is to
+        be used. */
+      struct fmt_spec f;
+
       if (!parse_DATA_LIST_vars (lexer, &v, &nv, PV_NONE))
        return CMD_FAILURE;
 
@@ -57,6 +57,10 @@ cmd_numeric (struct lexer *lexer, struct dataset *ds)
        {
          if (!parse_format_specifier (lexer, &f))
            goto fail;
+
+         if ( ! fmt_check_output (&f))
+           goto fail;
+
          if (fmt_is_string (f.type))
            {
               char str[FMT_STRING_LEN_MAX + 1];