[gvfs] gdu volume monitor: Handle gdu_pool_new() returning NULL gracefully



commit 3eb8533baba381e4c454b764692dea8ef5876ad1
Author: Michael Terry <michael terry canonical com>
Date:   Fri Sep 14 16:14:53 2012 +0200

    gdu volume monitor: Handle gdu_pool_new() returning NULL gracefully
    
    https://bugzilla.gnome.org/show_bug.cgi?id=582579

 monitor/gdu/ggduvolumemonitor.c |   55 ++++++++++++++++++++++++---------------
 1 files changed, 34 insertions(+), 21 deletions(-)
---
diff --git a/monitor/gdu/ggduvolumemonitor.c b/monitor/gdu/ggduvolumemonitor.c
index db736c7..707faea 100644
--- a/monitor/gdu/ggduvolumemonitor.c
+++ b/monitor/gdu/ggduvolumemonitor.c
@@ -428,25 +428,28 @@ g_gdu_volume_monitor_constructor (GType                  type,
 
   monitor->pool = gdu_pool_new ();
 
-  g_signal_connect (monitor->pool,
-                    "presentable_added",
-                    G_CALLBACK (presentable_added),
-                    monitor);
-
-  g_signal_connect (monitor->pool,
-                    "presentable_removed",
-                    G_CALLBACK (presentable_removed),
-                    monitor);
-
-  g_signal_connect (monitor->pool,
-                    "presentable_changed",
-                    G_CALLBACK (presentable_changed),
-                    monitor);
-
-  g_signal_connect (monitor->pool,
-                    "presentable_job_changed",
-                    G_CALLBACK (presentable_job_changed),
-                    monitor);
+  if (monitor->pool != NULL)
+    {
+      g_signal_connect (monitor->pool,
+                        "presentable_added",
+                        G_CALLBACK (presentable_added),
+                        monitor);
+
+      g_signal_connect (monitor->pool,
+                        "presentable_removed",
+                        G_CALLBACK (presentable_removed),
+                        monitor);
+
+      g_signal_connect (monitor->pool,
+                        "presentable_changed",
+                        G_CALLBACK (presentable_changed),
+                        monitor);
+
+      g_signal_connect (monitor->pool,
+                        "presentable_job_changed",
+                        G_CALLBACK (presentable_job_changed),
+                        monitor);
+    }
 
   update_all (monitor, FALSE);
 
@@ -1213,6 +1216,9 @@ update_drives (GGduVolumeMonitor *monitor,
   GGduDrive *drive;
   GList *fstab_mount_points;
 
+  if (monitor->pool == NULL)
+    return;
+
   fstab_mount_points = g_unix_mount_points_get (NULL);
 
   cur_drives = NULL;
@@ -1296,6 +1302,9 @@ update_volumes (GGduVolumeMonitor *monitor,
   GGduDrive *drive;
   GList *fstab_mount_points;
 
+  if (monitor->pool == NULL)
+    return;
+
   fstab_mount_points = g_unix_mount_points_get (NULL);
 
   cur_volumes = NULL;
@@ -1424,14 +1433,15 @@ update_fstab_volumes (GGduVolumeMonitor *monitor,
       if (g_str_has_prefix (device_file, "/dev/"))
         {
           gchar resolved_path[PATH_MAX];
-          GduDevice *device;
+          GduDevice *device = NULL;
 
           /* doesn't exist */
           if (realpath (device_file, resolved_path) == NULL)
             continue;
 
           /* is handled by DKD */
-          device = gdu_pool_get_by_device_file (monitor->pool, resolved_path);
+          if (monitor->pool != NULL)
+            device = gdu_pool_get_by_device_file (monitor->pool, resolved_path);
           if (device != NULL)
             {
               g_object_unref (device);
@@ -1614,6 +1624,9 @@ update_discs (GGduVolumeMonitor *monitor,
    *
    */
 
+  if (monitor->pool == NULL)
+    return;
+
   cur_discs = NULL;
   for (l = monitor->disc_volumes; l != NULL; l = l->next)
     cur_discs = g_list_prepend (cur_discs, g_gdu_volume_get_presentable (G_GDU_VOLUME (l->data)));



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