diff options
author | Michael Terry <michael.terry@canonical.com> | 2012-09-14 16:14:53 +0200 |
---|---|---|
committer | Tomas Bzatek <tbzatek@redhat.com> | 2012-09-14 16:14:53 +0200 |
commit | 3eb8533baba381e4c454b764692dea8ef5876ad1 (patch) | |
tree | 9b83258111e1d40045c3b03b35bd66612ca0fa22 /monitor | |
parent | 58ba8d331b4f1ae071f3fe016ad934cbfc836308 (diff) | |
download | gvfs-3eb8533baba381e4c454b764692dea8ef5876ad1.tar.gz |
gdu volume monitor: Handle gdu_pool_new() returning NULL gracefully
https://bugzilla.gnome.org/show_bug.cgi?id=582579
Diffstat (limited to 'monitor')
-rw-r--r-- | 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 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))); |