summaryrefslogtreecommitdiff
path: root/daemon/gvfsjob.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2008-02-26 11:25:56 +0000
committerAlexander Larsson <alexl@src.gnome.org>2008-02-26 11:25:56 +0000
commit5742794285035d57e5760daad3f48e7808c4282e (patch)
tree36a206c742319bbe4f8113d9b0fded33676eb9f2 /daemon/gvfsjob.c
parent9874a1fb4116b7155ef00ee9f0644ad5d1131c90 (diff)
downloadgvfs-5742794285035d57e5760daad3f48e7808c4282e.tar.gz
Ref job while calling out.
2008-02-26 Alexander Larsson <alexl@redhat.com> * daemon/gvfsjob.c: (g_vfs_job_run): (g_vfs_job_try): Ref job while calling out. * daemon/gvfsjobmount.c: Own ref to backend while job is alive. svn path=/trunk/; revision=1391
Diffstat (limited to 'daemon/gvfsjob.c')
-rw-r--r--daemon/gvfsjob.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/daemon/gvfsjob.c b/daemon/gvfsjob.c
index 79402572..25b7b16b 100644
--- a/daemon/gvfsjob.c
+++ b/daemon/gvfsjob.c
@@ -188,7 +188,16 @@ g_vfs_job_run (GVfsJob *job)
GVfsJobClass *class;
class = G_VFS_JOB_GET_CLASS (job);
+
+ /* Ensure that the job lives durint the whole
+ * lifetime of the call, as it may disappear when
+ * we call g_vfs_job_succeed/fail()
+ */
+ g_object_ref (job);
+
class->run (job);
+
+ g_object_unref (job);
}
gboolean
@@ -197,7 +206,16 @@ g_vfs_job_try (GVfsJob *job)
GVfsJobClass *class;
class = G_VFS_JOB_GET_CLASS (job);
+
+ /* Ensure that the job lives durint the whole
+ * lifetime of the call, as it may disappear when
+ * we call g_vfs_job_succeed/fail()
+ */
+ g_object_ref (job);
+
return class->try (job);
+
+ g_object_unref (job);
}
void