X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fods-reader.c;h=97f9e33441d277de0d3d55ace4fd2540519d35ed;hb=9d9870db0d89e8f7f72de8ff5c9d37c8d9eb15c2;hp=cb16dbc6944187ea0312fe82f135c85623ea02df;hpb=e49745e3d5dff8e5e8e1bf3dddd82fc54d9f4aa4;p=pspp diff --git a/src/data/ods-reader.c b/src/data/ods-reader.c index cb16dbc694..97f9e33441 100644 --- a/src/data/ods-reader.c +++ b/src/data/ods-reader.c @@ -209,6 +209,7 @@ ods_get_sheet_range (struct spreadsheet *s, int n) static void ods_file_casereader_destroy (struct casereader *reader UNUSED, void *r_) { + int i; struct ods_reader *r = r_; if ( r == NULL) return ; @@ -227,7 +228,16 @@ ods_file_casereader_destroy (struct casereader *reader UNUSED, void *r_) caseproto_unref (r->proto); - // free (r); + xmlFree (r->current_sheet_name); + + for (i = 0; i < r->n_allocated_sheets; ++i) + { + xmlFree (r->sheets[i].name); + } + + free (r->sheets); + + free (r); } static void @@ -298,6 +308,8 @@ process_node (struct ods_reader *r) if (! xmlTextReaderIsEmptyElement (r->xtr)) r->state = STATE_ROW; + + xmlFree (value); } else if (0 == xmlStrcasecmp (name, _xml("table:table")) && (XML_READER_TYPE_END_ELEMENT == r->node_type))