Fixed some memory leaks
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 3 Mar 2013 13:25:54 +0000 (14:25 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 3 Mar 2013 13:25:54 +0000 (14:25 +0100)
src/data/gnumeric-reader.c
src/data/ods-reader.c
src/language/data-io/get-data.c

index 514616ace74b59749cef5930344533a7bda51683..578ff8ab4b69a67764653df5eff52154a46a6abe 100644 (file)
@@ -175,6 +175,7 @@ gnumeric_get_sheet_range (struct spreadsheet *s, int n)
 static void
 gnm_file_casereader_destroy (struct casereader *reader UNUSED, void *r_)
 {
+  int i;
   struct gnumeric_reader *r = r_;
   if ( r == NULL)
        return ;
@@ -188,7 +189,6 @@ gnm_file_casereader_destroy (struct casereader *reader UNUSED, void *r_)
 
   caseproto_unref (r->proto);
 
-#if 0
   for (i = 0; i < r->spreadsheet.n_sheets; ++i)
     {
       xmlFree (r->sheets[i].name);
@@ -198,7 +198,6 @@ gnm_file_casereader_destroy (struct casereader *reader UNUSED, void *r_)
 
 
   free (r);
-#endif
 }
 
 static void
index cb16dbc6944187ea0312fe82f135c85623ea02df..97f9e33441d277de0d3d55ace4fd2540519d35ed 100644 (file)
@@ -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))
index 3530c0e04ea0b0eca633f1e3afef76309739abbd..2879e34a4bb3f329a3ab244cd8bb4c6b75f6e228 100644 (file)
@@ -103,6 +103,8 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds)
          dict = spreadsheet->dict;
        }
 
+      free (filename);
+
       if (reader)
        {
          dataset_set_dict (ds, dict);