diff options
author | Alexander Larsson <alexl@redhat.com> | 2008-02-26 11:25:56 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2008-02-26 11:25:56 +0000 |
commit | 5742794285035d57e5760daad3f48e7808c4282e (patch) | |
tree | 36a206c742319bbe4f8113d9b0fded33676eb9f2 /daemon/gvfsjob.c | |
parent | 9874a1fb4116b7155ef00ee9f0644ad5d1131c90 (diff) | |
download | gvfs-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.c | 18 |
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 |