X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fsession.c;h=90922f3b244e455b6b88b401b5bcf42ad549b8b4;hb=32538f9f35aee7145a49971f9dae1394a1a201b5;hp=56aa31a91cd581036890e312c04bb83bdd30de5b;hpb=b2b2b0a29f80de89d96bcceea90f117930ab47b9;p=pspp diff --git a/src/data/session.c b/src/data/session.c index 56aa31a91c..90922f3b24 100644 --- a/src/data/session.c +++ b/src/data/session.c @@ -69,6 +69,7 @@ session_destroy (struct session *s) s->active = NULL; HMAPX_FOR_EACH_SAFE (ds, node, next, &s->datasets) dataset_destroy (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)); @@ -174,7 +178,7 @@ session_get_dataset_by_seqno (const struct session *s, unsigned int seqno) return NULL; } -/* Returns an identifier that is is not currently in use as a dataset name. +/* Returns an identifier that is not currently in use as a dataset name. The caller must free the returned identifier, with free(). */ char * session_generate_dataset_name (struct session *s)