X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2Fgui%2Fpsppire-data-window.c;h=f6bd2efbd979b1063f745bc709129c4b1c3b674c;hb=0db42c2d683822e1252f17c2c81252a79e618d9c;hp=2149a89dbd9213da3b0bff069ed726c5a130a92e;hpb=e8fb3677342a64a1d93825e5f158d1612561a033;p=pspp diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index 2149a89dbd..f6bd2efbd9 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -79,6 +79,7 @@ static void psppire_data_window_init (PsppireDataWindow *data_edit static void psppire_data_window_iface_init (PsppireWindowIface *iface); static void psppire_data_window_dispose (GObject *object); +static void psppire_data_window_finalize (GObject *object); static void psppire_data_window_set_property (GObject *object, guint prop_id, const GValue *value, @@ -142,6 +143,7 @@ psppire_data_window_class_init (PsppireDataWindowClass *class) parent_class = g_type_class_peek_parent (class); object_class->dispose = psppire_data_window_dispose; + object_class->finalize = psppire_data_window_finalize; object_class->set_property = psppire_data_window_set_property; object_class->get_property = psppire_data_window_get_property; @@ -951,6 +953,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de, de->dataset = ds; dict = psppire_dict_new_from_dict (dataset_dict (ds)); de->var_store = psppire_var_store_new (dict); + g_object_unref (dict); de->data_store = psppire_data_store_new (dict); psppire_data_store_set_reader (de->data_store, NULL); @@ -1212,18 +1215,6 @@ psppire_data_window_dispose (GObject *object) { PsppireDataWindow *dw = PSPPIRE_DATA_WINDOW (object); - if (dw->dataset) - { - struct dataset *dataset = dw->dataset; - struct session *session = dataset_session (dataset); - - dw->dataset = NULL; - - dataset_set_callbacks (dataset, NULL, NULL); - session_set_active_dataset (session, NULL); - dataset_destroy (dataset); - } - if (dw->builder != NULL) { g_object_unref (dw->builder); @@ -1252,6 +1243,27 @@ psppire_data_window_dispose (GObject *object) G_OBJECT_CLASS (parent_class)->dispose (object); } +static void +psppire_data_window_finalize (GObject *object) +{ + PsppireDataWindow *dw = PSPPIRE_DATA_WINDOW (object); + + if (dw->dataset) + { + struct dataset *dataset = dw->dataset; + struct session *session = dataset_session (dataset); + + dw->dataset = NULL; + + dataset_set_callbacks (dataset, NULL, NULL); + session_set_active_dataset (session, NULL); + dataset_destroy (dataset); + } + + if (G_OBJECT_CLASS (parent_class)->finalize) + G_OBJECT_CLASS (parent_class)->finalize (object); +} + static void psppire_data_window_set_property (GObject *object, guint prop_id,