[glib] Take a reference on the gio file monitors while signaling pending file changes
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Subject: [glib] Take a reference on the gio file monitors while signaling pending file changes
- Date: Wed, 20 May 2009 08:25:26 -0400 (EDT)
commit d0d10e847f3ea347d651714050a8bafd5332e2cb
Author: Robert Bragg <robert linux intel com>
Date: Wed May 6 09:20:43 2009 +0100
Take a reference on the gio file monitors while signaling pending file changes
It was possible for a signal handler to remove the last reference and
dispose the monitor. If there were remaining pending_file_changes they
tried to dereference the disposed monitor.
This patch simply calls g_object_{ref,unref} around the loop that signals
the changes.
---
gio/gfilemonitor.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/gio/gfilemonitor.c b/gio/gfilemonitor.c
index 108e7a6..41444e3 100644
--- a/gio/gfilemonitor.c
+++ b/gio/gfilemonitor.c
@@ -364,6 +364,7 @@ emit_cb (gpointer data)
monitor->priv->pending_file_changes = NULL;
monitor->priv->pending_file_change_id = 0;
+ g_object_ref (monitor);
for (iter = pending; iter; iter = iter->next)
{
FileChange *change = iter->data;
@@ -372,6 +373,8 @@ emit_cb (gpointer data)
file_change_free (change);
}
g_slist_free (pending);
+ g_object_unref (monitor);
+
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]