From 1134f778a7d1e729190065ce58f02b228e3c0a21 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sun, 14 Sep 2008 20:51:38 +0800 Subject: [PATCH 1/1] Don't destroy dictionary on error if we didn't create it. Avoid assertion failure on bad input. Closes bug #24031 --- src/language/data-io/data-list.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/language/data-io/data-list.c b/src/language/data-io/data-list.c index ecb87d4a..7a2a074b 100644 --- a/src/language/data-io/data-list.c +++ b/src/language/data-io/data-list.c @@ -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); -- 2.30.2