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.
This commit is contained in:
Robert Bragg 2009-05-06 09:20:43 +01:00 committed by Alexander Larsson
parent 6a9df8256a
commit d0d10e847f

View File

@ -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;
}