From 3eb8533baba381e4c454b764692dea8ef5876ad1 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Fri, 14 Sep 2012 16:14:53 +0200 Subject: 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 file changed, 34 insertions(+), 21 deletions(-) (limited to 'monitor') 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))); -- cgit v1.2.1