Fix memory leak in MRSETS
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 24 Jul 2010 15:54:55 +0000 (17:54 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 24 Jul 2010 15:54:55 +0000 (17:54 +0200)
src/data/dictionary.c
src/data/mrset.c
src/data/sys-file-reader.c

index dc7e8732296ebc4703faa91cc429719ecff846b2..9222f7ec0ba85ab94bdc88952029f8e59fc4b3d5 100644 (file)
@@ -297,7 +297,7 @@ dict_destroy (struct dictionary *d)
       dict_clear (d);
       hmap_destroy (&d->name_map);
       attrset_destroy (&d->attributes);
-      free (d->mrsets);
+      dict_clear_mrsets (d);
       free (d->encoding);
       free (d);
     }
index 2f05edb845886786caab5b5ce94503ea22e206c5..d1807b96f301000f807ccc87fb696d735562530e 100644 (file)
@@ -58,6 +58,7 @@ mrset_destroy (struct mrset *mrset)
       free (mrset->label);
       free (mrset->vars);
       value_destroy (&mrset->counted, mrset->width);
+      free (mrset);
     }
 }
 
index 268023cf2f3ed71ab529e7f41a1afe9144ddc839..b92f42a96c6e159e13bb8c2f0d8a3cf419798923 100644 (file)
@@ -1172,6 +1172,7 @@ read_mrsets (struct sfm_reader *r, size_t size, size_t count,
 
       dict_add_mrset (dict, mrset);
       mrset = NULL;
+      stringi_set_destroy (&var_names);
     }
   mrset_destroy (mrset);
   close_text_record (r, text);