gvfs r1386 - in trunk: . daemon



Author: otte
Date: Tue Feb 26 09:39:24 2008
New Revision: 1386
URL: http://svn.gnome.org/viewvc/gvfs?rev=1386&view=rev

Log:
2008-02-26  Benjamin Otte  <otte gnome org>

	* daemon/gvfsjobmount.c: (run), (try):
	use ref/unref pair to stop backend from going away when the mount
	fails



Modified:
   trunk/ChangeLog
   trunk/daemon/gvfsjobmount.c

Modified: trunk/daemon/gvfsjobmount.c
==============================================================================
--- trunk/daemon/gvfsjobmount.c	(original)
+++ trunk/daemon/gvfsjobmount.c	Tue Feb 26 09:39:24 2008
@@ -97,7 +97,8 @@
 run (GVfsJob *job)
 {
   GVfsJobMount *op_job = G_VFS_JOB_MOUNT (job);
-  GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+  GVfsBackend *backend = op_job->backend;
+  GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (backend);
 
   if (class->mount == NULL)
     {
@@ -106,27 +107,34 @@
       return;
     }
   
-  class->mount (op_job->backend,
+  g_object_ref (backend);
+  class->mount (backend,
 		op_job,
 		op_job->mount_spec,
 		op_job->mount_source,
 		op_job->is_automount);
+  g_object_unref (backend);
 }
 
 static gboolean
 try (GVfsJob *job)
 {
   GVfsJobMount *op_job = G_VFS_JOB_MOUNT (job);
-  GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+  GVfsBackend *backend = op_job->backend;
+  GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (backend);
+  gboolean result;
 
   if (class->try_mount == NULL)
     return FALSE;
 
-  return class->try_mount (op_job->backend,
-			   op_job,
-			   op_job->mount_spec,
-			   op_job->mount_source,
-			   op_job->is_automount);
+  g_object_ref (backend);
+  result = class->try_mount (backend,
+			     op_job,
+			     op_job->mount_spec,
+			     op_job->mount_source,
+			     op_job->is_automount);
+  g_object_unref (backend);
+  return result;
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]