From d502474673494b002af0bc5c97c21837a1e54f89 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Fri, 2 Jan 2009 16:47:34 +0900 Subject: [PATCH] Make sure finalizers are called properly --- src/ui/gui/psppire-data-window.c | 7 ++----- src/ui/gui/psppire-output-window.c | 5 ++--- src/ui/gui/psppire-syntax-window.c | 6 ++++-- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index 90e749d3..0716804e 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -100,19 +100,15 @@ psppire_data_window_get_type (void) return psppire_data_window_type; } +static GObjectClass *parent_class ; static void psppire_data_window_finalize (GObject *object) { PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (object); - GObjectClass *class = G_OBJECT_GET_CLASS (object); - - GObjectClass *parent_class = g_type_class_peek_parent (class); - g_object_unref (de->xml); - if (G_OBJECT_CLASS (parent_class)->finalize) (*G_OBJECT_CLASS (parent_class)->finalize) (object); } @@ -121,6 +117,7 @@ psppire_data_window_finalize (GObject *object) static void psppire_data_window_class_init (PsppireDataWindowClass *class) { + parent_class = g_type_class_peek_parent (class); } diff --git a/src/ui/gui/psppire-output-window.c b/src/ui/gui/psppire-output-window.c index 5fc52e9b..abbcae71 100644 --- a/src/ui/gui/psppire-output-window.c +++ b/src/ui/gui/psppire-output-window.c @@ -75,24 +75,23 @@ psppire_output_window_get_type (void) return psppire_output_window_type; } +static GObjectClass *parent_class; static void psppire_output_window_finalize (GObject *object) { GObjectClass *class = G_OBJECT_GET_CLASS (object); - GObjectClass *parent_class = g_type_class_peek_parent (class); - if (G_OBJECT_CLASS (parent_class)->finalize) (*G_OBJECT_CLASS (parent_class)->finalize) (object); - } static void psppire_output_window_class_init (PsppireOutputWindowClass *class) { + parent_class = g_type_class_peek_parent (class); } diff --git a/src/ui/gui/psppire-syntax-window.c b/src/ui/gui/psppire-syntax-window.c index 37bfd35c..3fe6d1a6 100644 --- a/src/ui/gui/psppire-syntax-window.c +++ b/src/ui/gui/psppire-syntax-window.c @@ -70,13 +70,13 @@ psppire_syntax_window_get_type (void) return psppire_syntax_window_type; } +static GObjectClass *parent_class ; + static void psppire_syntax_window_finalize (GObject *object) { GObjectClass *class = G_OBJECT_GET_CLASS (object); - GObjectClass *parent_class = g_type_class_peek_parent (class); - if (G_OBJECT_CLASS (parent_class)->finalize) (*G_OBJECT_CLASS (parent_class)->finalize) (object); } @@ -93,6 +93,8 @@ psppire_syntax_window_base_init (PsppireSyntaxWindowClass *class) { GObjectClass *object_class = G_OBJECT_CLASS (class); + parent_class = g_type_class_peek_parent (class); + object_class->finalize = psppire_syntax_window_finalize; } -- 2.30.2