summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Schermer <nick@xfce.org>2013-04-26 20:05:10 +0200
committerNick Schermer <nick@xfce.org>2013-05-05 17:00:25 +0200
commit3ed422cb352b65bc7c4ff6d68b1ed89bd278464f (patch)
treefd48e7cd4b560f907619cdb33b260bd5483a45bb
parent801e7ee5458a0037cb6a7a548eeec73a74330db4 (diff)
downloadxfce4-session-3ed422cb352b65bc7c4ff6d68b1ed89bd278464f.tar.gz
Store the watch function id to avoid possible double free (bug #9709).
(cherry picked from commit ab391138cacc62ab184a338e237c4430356b41f9)
-rw-r--r--xfce4-session/xfsm-startup.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/xfce4-session/xfsm-startup.c b/xfce4-session/xfsm-startup.c
index e43c53cd..c621397a 100644
--- a/xfce4-session/xfsm-startup.c
+++ b/xfce4-session/xfsm-startup.c
@@ -903,9 +903,10 @@ xfsm_startup_start_properties (XfsmProperties *properties,
child_watch_data = g_new0 (XfsmStartupData, 1);
child_watch_data->manager = g_object_ref (manager);
child_watch_data->properties = properties;
- g_child_watch_add_full (G_PRIORITY_LOW, properties->pid,
- xfsm_startup_child_watch, child_watch_data,
- (GDestroyNotify) xfsm_startup_data_free);
+ child_watch_data->properties->child_watch_id =
+ g_child_watch_add_full (G_PRIORITY_LOW, properties->pid,
+ xfsm_startup_child_watch, child_watch_data,
+ (GDestroyNotify) xfsm_startup_data_free);
/* set a timeout -- client must register in a a certain amount of time
* or it's assumed to be broken/have issues. */