X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dict.c;h=63ce9d33080c9f1bd255b34315f438edbd2929ac;hb=8d6bfdd2a100bf8166b3b0b3f006d46f3e7a59e9;hp=0afb889037788e74b577581844d0c5306065bbcf;hpb=b4f585e70eca236ca97e53ef487cea9a3ab5e78a;p=pspp diff --git a/src/ui/gui/psppire-dict.c b/src/ui/gui/psppire-dict.c index 0afb889037..63ce9d3308 100644 --- a/src/ui/gui/psppire-dict.c +++ b/src/ui/gui/psppire-dict.c @@ -288,6 +288,7 @@ psppire_dict_dispose (GObject *object) PsppireDict *d = PSPPIRE_DICT (object); dict_set_callbacks (d->dict, NULL, NULL); + dict_unref (d->dict); G_OBJECT_CLASS (parent_class)->dispose (object); } @@ -367,7 +368,7 @@ PsppireDict* psppire_dict_new_from_dict (struct dictionary *d) { PsppireDict *new_dict = g_object_new (PSPPIRE_TYPE_DICT, NULL); - new_dict->dict = d; + new_dict->dict = dict_ref (d); dict_set_callbacks (new_dict->dict, &gui_callbacks, new_dict); @@ -380,10 +381,13 @@ psppire_dict_replace_dictionary (PsppireDict *dict, struct dictionary *d) { struct variable *var = dict_get_weight (d); + struct dictionary *old_dict = dict->dict; + guint old_n = dict_get_var_cnt (dict->dict); guint new_n = dict_get_var_cnt (d); - dict->dict = d; + dict->dict = dict_ref (d); + dict_unref (old_dict); weight_changed_callback (d, var ? var_get_dict_index (var) : -1, dict);