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.
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;
file_change_free (change);
}
g_slist_free (pending);
+ g_object_unref (monitor);
+
return FALSE;
}