[goffice] A better fix to #610435.
- From: Jean Bréfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [goffice] A better fix to #610435.
- Date: Fri, 19 Feb 2010 19:49:03 +0000 (UTC)
commit 9031284871871ae6f68bb1d8925e5bfb3088aad8
Author: Jean Brefort <jean brefort normalesup org>
Date: Fri Feb 19 20:50:34 2010 +0100
A better fix to #610435.
ChangeLog | 8 ++++++++
goffice/graph/gog-guru-type-selector.ui | 3 ---
goffice/graph/gog-object.c | 13 +++++++++++--
3 files changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index bfc741d..aa9a90e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2010-02-19 Jean Brefort <jean brefort normalesup org>
+ * goffice/graph/gog-object.c (gog_object_parent_finalized),
+ (gog_object_finalize): ensure that children parent is set to NULL.
+ (gog_object_get_graph): restore previous version
+ * goffice/graph/gog-guru-type-selector.ui: remove orientation property
+ to avoid warnings with old gtk+.
+
+2010-02-19 Jean Brefort <jean brefort normalesup org>
+
* goffice/graph/gog-object.c (gog_object_get_graph): avoid a crash if a
parent has been finalized. [#610435]
diff --git a/goffice/graph/gog-guru-type-selector.ui b/goffice/graph/gog-guru-type-selector.ui
index f4bfb2d..005b407 100644
--- a/goffice/graph/gog-guru-type-selector.ui
+++ b/goffice/graph/gog-guru-type-selector.ui
@@ -67,12 +67,10 @@
<object class="GtkVPaned" id="vpaned1">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="orientation">vertical</property>
<property name="position">250</property>
<child>
<object class="GtkVBox" id="sample-box">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="sample-label">
<property name="visible">True</property>
@@ -111,7 +109,6 @@
<child>
<object class="GtkVBox" id="rbox">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="subtype_label">
diff --git a/goffice/graph/gog-object.c b/goffice/graph/gog-object.c
index eede7a1..0a4bf3c 100644
--- a/goffice/graph/gog-object.c
+++ b/goffice/graph/gog-object.c
@@ -92,6 +92,13 @@ static GObjectClass *parent_klass;
static void gog_object_set_id (GogObject *obj, unsigned id);
static void
+gog_object_parent_finalized (GogObject *obj)
+{
+ obj->parent = NULL;
+ g_object_unref (obj);
+}
+
+static void
gog_object_finalize (GObject *gobj)
{
GogObject *obj = GOG_OBJECT (gobj);
@@ -99,7 +106,7 @@ gog_object_finalize (GObject *gobj)
g_free (obj->user_name); obj->user_name = NULL;
g_free (obj->auto_name); obj->auto_name = NULL;
- g_slist_foreach (obj->children, (GFunc) g_object_unref, NULL);
+ g_slist_foreach (obj->children, (GFunc) gog_object_parent_finalized, NULL);
g_slist_free (obj->children);
obj->children = NULL;
@@ -946,7 +953,9 @@ gog_object_get_parent_typed (GogObject const *obj, GType t)
GogGraph *
gog_object_get_graph (GogObject const *obj)
{
- for (; GOG_IS_OBJECT (obj) ; obj = obj->parent)
+ g_return_val_if_fail (GOG_IS_OBJECT (obj), NULL);
+
+ for (; obj != NULL ; obj = obj->parent)
if (GOG_IS_GRAPH (obj))
return GOG_GRAPH (obj);
return NULL;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]