more work on datasets
[pspp] / src / data / session.c
index 56aa31a91cd581036890e312c04bb83bdd30de5b..6dc1334cf206d3f9bddfdbb2626003edabe70dc0 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+   Copyright (C) 2010, 2011, 2012, 2013, 2016 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -68,7 +68,8 @@ session_destroy (struct session *s)
 
       s->active = NULL;
       HMAPX_FOR_EACH_SAFE (ds, node, next, &s->datasets)
-        dataset_destroy (ds);
+        dataset_unref (ds);
+      hmapx_destroy (&s->datasets);
       free (s->syntax_encoding);
       free (s);
     }
@@ -96,7 +97,10 @@ session_add_dataset (struct session *s, struct dataset *ds)
   if (old == s->active)
     s->active = ds;
   if (old != NULL)
-    session_remove_dataset (s, old);
+    {
+      session_remove_dataset (s, old);
+      dataset_destroy (old);
+    }
 
   hmapx_insert (&s->datasets, ds,
                 utf8_hash_case_string (dataset_name (ds), 0));