summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Terry <michael.terry@canonical.com>2012-09-14 16:14:53 +0200
committerTomas Bzatek <tbzatek@redhat.com>2012-09-14 16:14:53 +0200
commit3eb8533baba381e4c454b764692dea8ef5876ad1 (patch)
tree9b83258111e1d40045c3b03b35bd66612ca0fa22
parent58ba8d331b4f1ae071f3fe016ad934cbfc836308 (diff)
downloadgvfs-3eb8533baba381e4c454b764692dea8ef5876ad1.tar.gz
gdu volume monitor: Handle gdu_pool_new() returning NULL gracefully
https://bugzilla.gnome.org/show_bug.cgi?id=582579
-rw-r--r--monitor/gdu/ggduvolumemonitor.c55
1 files changed, 34 insertions, 21 deletions
diff --git a/monitor/gdu/ggduvolumemonitor.c b/monitor/gdu/ggduvolumemonitor.c
index db736c7d..707faea3 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)));