Fixed some more leaks
authorJohn Darrington <john@darrington.wattle.id.au>
Fri, 1 Mar 2013 20:30:08 +0000 (21:30 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Fri, 1 Mar 2013 20:30:08 +0000 (21:30 +0100)
src/data/ods-reader.c
src/language/data-io/get-data.c

index a8c67d30ed9474a7702aa516b0d5705a43685764..aa5b3fe90eceb5eba7c753838db1ba567f8b5f43 100644 (file)
@@ -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)
index f243aecac3f4014acc69a97b16df93310ae61d64..3530c0e04ea0b0eca633f1e3afef76309739abbd 100644 (file)
@@ -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);
 }