From: John Darrington Date: Fri, 1 Mar 2013 20:30:08 +0000 (+0100) Subject: Fixed some more leaks X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf248ede66df70d2d27cddbe61da825dd91dbeea;p=pspp Fixed some more leaks --- diff --git a/src/data/ods-reader.c b/src/data/ods-reader.c index a8c67d30ed..aa5b3fe90e 100644 --- a/src/data/ods-reader.c +++ b/src/data/ods-reader.c @@ -305,7 +305,6 @@ process_node (struct ods_reader *r) } break; case STATE_ROW: - // printf ("%s:%d Name is %s\n", __FILE__, __LINE__, name); if ( (0 == xmlStrcasecmp (name, _xml ("table:table-cell"))) && (XML_READER_TYPE_ELEMENT == r->node_type)) @@ -680,8 +679,6 @@ ods_make_reader (struct spreadsheet *spreadsheet, if (r->stop_col != -1 && idx > r->stop_col - r->start_col) continue; - // printf ("%s:%d IDX %d COL %d\n", __FILE__, __LINE__, idx, r->col); - if (r->state == STATE_CELL_CONTENT && XML_READER_TYPE_TEXT == r->node_type) @@ -704,8 +701,6 @@ ods_make_reader (struct spreadsheet *spreadsheet, var_spec [idx].name = strdup (CHAR_CAST (const char *, value)); - // printf ("%s:%d Name %s\n", __FILE__, __LINE__, var_spec [idx].name); - xmlFree (value); } } @@ -756,17 +751,11 @@ ods_make_reader (struct spreadsheet *spreadsheet, var_spec [idx].name = NULL; n_var_specs = idx + 1; } -#if 0 - printf ("%s:%d Idx %d n_var_specs %d\n", __FILE__, __LINE__, - idx, n_var_specs); -#endif - + var_spec [idx].firstval.type = type; var_spec [idx].firstval.text = xmlTextReaderValue (r->xtr); var_spec [idx].firstval.value = val_string; - // printf ("%s:%d Text %s\n", __FILE__, __LINE__, var_spec [idx].firstval.text); - val_string = NULL; type = NULL; } @@ -830,9 +819,8 @@ ods_make_reader (struct spreadsheet *spreadsheet, break; } - // zip_reader_destroy (zreader); + // zip_reader_destroy (zreader); -#if 0 for ( i = 0 ; i < n_var_specs ; ++i ) { free (var_spec[i].firstval.type); @@ -842,7 +830,7 @@ ods_make_reader (struct spreadsheet *spreadsheet, } free (var_spec); -#endif + return casereader_create_sequential (NULL, @@ -852,7 +840,7 @@ ods_make_reader (struct spreadsheet *spreadsheet, error: - // zip_reader_destroy (zreader); + //zip_reader_destroy (zreader); for ( i = 0 ; i < n_var_specs ; ++i ) { @@ -947,8 +935,9 @@ ods_file_casereader_read (struct casereader *reader UNUSED, void *r_) convert_xml_to_value (c, var, xmv); } - free (xmv->text); - free (xmv->value); + xmlFree (xmv->text); + xmlFree (xmv->value); + xmlFree (xmv->type); free (xmv); } if ( r->state <= STATE_TABLE) diff --git a/src/language/data-io/get-data.c b/src/language/data-io/get-data.c index f243aecac3..3530c0e04e 100644 --- a/src/language/data-io/get-data.c +++ b/src/language/data-io/get-data.c @@ -49,7 +49,7 @@ static bool parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_options *opts); -static void destroy_spreadsheet_read_info (struct spreadsheet_read_info *, struct spreadsheet_read_options *); +static void destroy_spreadsheet_read_info (struct spreadsheet_read_options *); static int parse_get_txt (struct lexer *lexer, struct dataset *); static int parse_get_psql (struct lexer *lexer, struct dataset *); @@ -108,12 +108,17 @@ 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); + + + error: free (tok); return CMD_FAILURE; @@ -672,7 +677,7 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) static void -destroy_spreadsheet_read_info (UNUSED struct spreadsheet_read_info *sri, - UNUSED struct spreadsheet_read_options *opts) +destroy_spreadsheet_read_info (struct spreadsheet_read_options *opts) { + free (opts->cell_range); }