From: John Darrington Date: Sun, 14 Sep 2008 12:51:38 +0000 (+0800) Subject: Don't destroy dictionary on error if we didn't create it. X-Git-Tag: v0.6.1~12 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1134f778a7d1e729190065ce58f02b228e3c0a21;p=pspp-builds.git Don't destroy dictionary on error if we didn't create it. Avoid assertion failure on bad input. Closes bug #24031 --- 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);