diff options
author | Jorg Schuler <jcsjcs@users.sourceforge.net> | 2006-01-03 04:41:45 +0000 |
---|---|---|
committer | Jorg Schuler <jcsjcs@users.sourceforge.net> | 2006-01-03 04:41:45 +0000 |
commit | f3c7e59064d2dde5a33e0f5c2a3ef05fcc3c0413 (patch) | |
tree | 876af50db19f6dcfbb63f3dfcb20f78007450f99 /src | |
parent | 6659bb351db4228a56938e52450983103d273fde (diff) | |
download | libgpod-f3c7e59064d2dde5a33e0f5c2a3ef05fcc3c0413.tar.gz libgpod-f3c7e59064d2dde5a33e0f5c2a3ef05fcc3c0413.tar.xz libgpod-f3c7e59064d2dde5a33e0f5c2a3ef05fcc3c0413.zip |
* src/ipod-device.c: (ipod_device_set_property) check hal_context
before accessing it to avoid segfault when hald is not running.
(ipod_device_hal_initialize) fixed memory leak: 'error' was not
freed if libhal_ctx_init() failed.
git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1199 f01d2545-417e-4e96-918e-98f8d0dbbcb6
Diffstat (limited to 'src')
-rw-r--r-- | src/ipod-device.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/ipod-device.c b/src/ipod-device.c index 6d3790c..1a069f5 100644 --- a/src/ipod-device.c +++ b/src/ipod-device.c @@ -1,4 +1,4 @@ -/* Time-stamp: <2005-12-18 23:57:23 jcs> +/* Time-stamp: <2006-01-03 13:40:04 jcs> | | Copyright (C) 2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -529,19 +529,22 @@ ipod_device_set_property(GObject *object, guint prop_id, gchar **volumes; gint volume_count; + g_return_if_fail (device); + switch(prop_id) { case PROP_MOUNT_POINT: case PROP_DEVICE_PATH: case PROP_HAL_VOLUME_ID: + if (device->priv->hal_context) + { str = g_value_get_string(value); volumes = libhal_manager_find_device_string_match( - device->priv->hal_context, "block.device", str, + device->priv->hal_context, "block.device", str, &volume_count, NULL); - if(volume_count == 0) { libhal_free_string_array(volumes); volumes = libhal_manager_find_device_string_match( - device->priv->hal_context, "volume.mount_point", + device->priv->hal_context, "volume.mount_point", str, &volume_count, NULL); if(volume_count >= 1) @@ -559,8 +562,9 @@ ipod_device_set_property(GObject *object, guint prop_id, /* end JCS for libgpod */ #endif device->priv->is_ipod = ipod_device_reload(device); - libhal_free_string_array(volumes); - break; + libhal_free_string_array(volumes); + } + break; case PROP_DEVICE_NAME: str = g_value_get_string(value); g_free_if_not_null(device->priv->device_name); @@ -864,6 +868,7 @@ ipod_device_hal_initialize() libhal_ctx_set_dbus_connection(hal_context, dbus_connection); if(!libhal_ctx_init(hal_context, &error)) { + dbus_error_free(&error); libhal_ctx_free(hal_context); return NULL; } |