From d502474673494b002af0bc5c97c21837a1e54f89 Mon Sep 17 00:00:00 2001
From: John Darrington <john@darrington.wattle.id.au>
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