Don't destroy dictionary on error if we didn't create it.
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 14 Sep 2008 12:51:38 +0000 (20:51 +0800)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 14 Sep 2008 12:51:38 +0000 (20:51 +0800)
Avoid assertion failure on bad input.  Closes bug #24031

src/language/data-io/data-list.c

index ecb87d4a61a779a98af86cc63ae8b896a1bf5ec1..7a2a074b59e763eebe322780c96e86f057991ed6 100644 (file)
@@ -282,7 +282,8 @@ cmd_data_list (struct lexer *lexer, struct dataset *ds)
 
  error:
   data_parser_destroy (parser);
-  dict_destroy (dict);
+  if (!in_input_program ())
+    dict_destroy (dict);
   fh_unref (fh);
   return CMD_CASCADING_FAILURE;
 }
@@ -404,7 +405,7 @@ parse_free (struct lexer *lexer, struct dictionary *dict,
 
       if (!parse_DATA_LIST_vars_pool (lexer, tmp_pool,
                                      &name, &name_cnt, PV_NONE))
-       return 0;
+       return false;
 
       if (lex_match (lexer, '('))
        {
@@ -435,7 +436,7 @@ parse_free (struct lexer *lexer, struct dictionary *dict,
          if (v == NULL)
            {
              msg (SE, _("%s is a duplicate variable name."), name[i]);
-             return 0;
+             return false;
            }
           var_set_both_formats (v, &output);