From: John Darrington Date: Thu, 7 Mar 2013 12:49:06 +0000 (+0100) Subject: Make the spreadsheet reader responsible for destroying its opts X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=acb9e3de8a50ad77df80375d90a4a4b526e42c1c;p=pspp Make the spreadsheet reader responsible for destroying its opts --- diff --git a/src/data/spreadsheet-reader.h b/src/data/spreadsheet-reader.h index 5cfd81d7e1..960d076b38 100644 --- a/src/data/spreadsheet-reader.h +++ b/src/data/spreadsheet-reader.h @@ -30,9 +30,9 @@ struct casereeader; */ struct spreadsheet_read_options { - const char *sheet_name ; /* The name of the sheet to open (in UTF-8) */ + char *sheet_name ; /* The name of the sheet to open (in UTF-8) */ int sheet_index ; /* The index of the sheet to open (only used if sheet_name is NULL) */ - const char *cell_range ; /* The cell range (in UTF-8) */ + char *cell_range ; /* The cell range (in UTF-8) */ bool read_names ; /* True if the first row is to be used as the names of the variables */ int asw ; /* The width of string variables in the created dictionary */ }; diff --git a/src/language/data-io/get-data.c b/src/language/data-io/get-data.c index 2879e34a4b..70f6c89cbc 100644 --- a/src/language/data-io/get-data.c +++ b/src/language/data-io/get-data.c @@ -57,6 +57,7 @@ static int parse_get_psql (struct lexer *lexer, struct dataset *); int cmd_get_data (struct lexer *lexer, struct dataset *ds) { + struct spreadsheet_read_options opts; char *tok = NULL; lex_force_match (lexer, T_SLASH); @@ -82,7 +83,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) char *filename = NULL; struct casereader *reader = NULL; struct dictionary *dict = NULL; - struct spreadsheet_read_options opts; + if (!parse_spreadsheet (lexer, &filename, &opts)) goto error; @@ -110,10 +111,8 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) dataset_set_dict (ds, dict); dataset_set_source (ds, reader); free (tok); - destroy_spreadsheet_read_info (&opts); return CMD_SUCCESS; } - destroy_spreadsheet_read_info (&opts); } else msg (SE, _("Unsupported TYPE %s."), tok); @@ -122,6 +121,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) error: + destroy_spreadsheet_read_info (&opts); free (tok); return CMD_FAILURE; } @@ -682,4 +682,5 @@ static void destroy_spreadsheet_read_info (struct spreadsheet_read_options *opts) { free (opts->cell_range); + free (opts->sheet_name); }