[maemo-commits] [maemo-commits] r13598 - in projects/haf/trunk/hildon-1: . src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Sep 5 14:48:34 EEST 2007
Author: mdk
Date: 2007-09-05 14:48:33 +0300 (Wed, 05 Sep 2007)
New Revision: 13598

Modified:
   projects/haf/trunk/hildon-1/ChangeLog
   projects/haf/trunk/hildon-1/src/hildon-window.c
Log:
Fixing the border freeing on destroy.


Modified: projects/haf/trunk/hildon-1/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-1/ChangeLog	2007-09-05 11:26:50 UTC (rev 13597)
+++ projects/haf/trunk/hildon-1/ChangeLog	2007-09-05 11:48:33 UTC (rev 13598)
@@ -1,5 +1,9 @@
 2007-09-05  Michael Dominic Kostrzewa  <michael.kostrzewa at nokia.com> 
 
+	* src/hildon-window.c: Fixing the border freeing on destroy.
+
+2007-09-05  Michael Dominic Kostrzewa  <michael.kostrzewa at nokia.com> 
+
 	* src/hildon-code-dialog-private.h:
 	* src/hildon-code-dialog.c: Adding a patch by Tomas Junnonen to fix the
 	kw keyboard support in HildonCodeDialog.

Modified: projects/haf/trunk/hildon-1/src/hildon-window.c
===================================================================
--- projects/haf/trunk/hildon-1/src/hildon-window.c	2007-09-05 11:26:50 UTC (rev 13597)
+++ projects/haf/trunk/hildon-1/src/hildon-window.c	2007-09-05 11:48:33 UTC (rev 13598)
@@ -391,9 +391,12 @@
       priv->escape_timeout = 0;
     }
 
-    g_free (priv->borders);
-    g_free (priv->toolbar_borders);
+    if (priv->borders) 
+        gtk_border_free (priv->borders);
 
+    if (priv->toolbar_borders)
+        gtk_border_free (priv->toolbar_borders);
+
     if (G_OBJECT_CLASS (parent_class)->finalize)
         G_OBJECT_CLASS (parent_class)->finalize (obj_self);
 
@@ -497,18 +500,37 @@
     HildonWindowPrivate *priv = HILDON_WINDOW_GET_PRIVATE (window);
     g_assert (priv);
 
-    g_free (priv->borders);
-    g_free (priv->toolbar_borders);
+    GtkBorder *borders = NULL;
+    GtkBorder *toolbar_borders = NULL;
 
-    gtk_widget_style_get (GTK_WIDGET (window), "borders",&priv->borders,
-            "toolbar-borders", &priv->toolbar_borders,
+    if (priv->borders)
+        gtk_border_free (priv->borders);
+    if (priv->toolbar_borders)
+        gtk_border_free (priv->toolbar_borders);
+
+    priv->borders = NULL;
+    priv->toolbar_borders = NULL;
+
+    gtk_widget_style_get (GTK_WIDGET (window), "borders",&borders,
+            "toolbar-borders", &toolbar_borders,
             NULL);
 
-    if (! priv->borders)
-        priv->borders = (GtkBorder *) g_malloc0 (sizeof (GtkBorder));
+    // We're doing a copy here instead of reusing the pointer, 
+    // as we don't know where it comes from (has it been allocated using 
+    // malloc or slices... and we want to free it sanely. Blowing on 
+    // cold probbably.
 
-    if (! priv->toolbar_borders)
-        priv->toolbar_borders = (GtkBorder *) g_malloc0 (sizeof (GtkBorder));
+    if (borders) {
+        priv->borders = gtk_border_copy (borders);
+        gtk_border_free (borders);
+    } else 
+        priv->borders = g_slice_new0 (GtkBorder);
+
+    if (toolbar_borders) {
+        priv->toolbar_borders = gtk_border_copy (toolbar_borders);
+        gtk_border_free (toolbar_borders);
+    } else
+        priv->toolbar_borders = g_slice_new0 (GtkBorder);
 }
 
 static void


More information about the maemo-commits mailing list