From: Ben Pfaff Date: Wed, 11 Jul 2012 04:48:01 +0000 (-0700) Subject: Merge "master" into "psppsheet" to obtain bug fixes from "master". X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a2727738806fde48b6f360182f12bd44e1a468db;hp=bea8b007855970c07083dbec5b5cc90f33990957;p=pspp Merge "master" into "psppsheet" to obtain bug fixes from "master". --- diff --git a/src/output/cairo.c b/src/output/cairo.c index 6229311aa7..a98df2e6c1 100644 --- a/src/output/cairo.c +++ b/src/output/cairo.c @@ -204,6 +204,8 @@ parse_color (struct output_driver *d, struct string_map *options, } } + free (string); + /* Convert 16 bit ints to float */ *dred = red / (double) 0xFFFF; *dgreen = green / (double) 0xFFFF; diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index 204c8f1c84..ad967b3256 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -78,6 +78,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, @@ -145,6 +146,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; @@ -1088,6 +1090,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, diff --git a/src/ui/gui/psppire-window-base.c b/src/ui/gui/psppire-window-base.c index 29c0fd7a58..a9f73535df 100644 --- a/src/ui/gui/psppire-window-base.c +++ b/src/ui/gui/psppire-window-base.c @@ -46,10 +46,7 @@ G_DEFINE_ABSTRACT_TYPE (PsppireWindowBase, psppire_window_base, GTK_TYPE_WINDOW) static const char * get_window_id (GtkWidget *wb) { - const gchar *name = NULL; - - g_object_get (wb, "name", &name, NULL); - + const gchar *name = gtk_widget_get_name (wb); if (NULL == name || 0 == strcmp ("", name)) name = G_OBJECT_TYPE_NAME (wb);