gvir_storage_pool_refresh must be called and must be successful before trying to use gvir_storage_pool_get_volume, gvir_storage_pool_get_volumes and gvir_storage_pool_create_volume. As the storage pool refresh can fail for reasons external to libvirt/libvirt-gobject, the library user should check _refresh errors. This commit outputs runtime warnings when these functions are called and GVirObjectStoragePool::priv::volumes is NULL. --- libvirt-gobject/libvirt-gobject-storage-pool.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/libvirt-gobject/libvirt-gobject-storage-pool.c b/libvirt-gobject/libvirt-gobject-storage-pool.c index 7f50037..a4316e9 100644 --- a/libvirt-gobject/libvirt-gobject-storage-pool.c +++ b/libvirt-gobject/libvirt-gobject-storage-pool.c @@ -523,6 +523,8 @@ GList *gvir_storage_pool_get_volumes(GVirStoragePool *pool) if (priv->volumes != NULL) { volumes = g_hash_table_get_values(priv->volumes); g_list_foreach(volumes, gvir_storage_vol_ref, NULL); + } else { + g_warn_if_reached(); } g_mutex_unlock(priv->lock); @@ -548,9 +550,14 @@ GVirStorageVol *gvir_storage_pool_get_volume(GVirStoragePool *pool, priv = pool->priv; g_mutex_lock(priv->lock); - volume = g_hash_table_lookup(priv->volumes, name); - if (volume) - g_object_ref(volume); + if (priv->volumes != NULL) { + volume = g_hash_table_lookup(priv->volumes, name); + if (volume) + g_object_ref(volume); + } else { + g_warn_if_reached(); + volume = NULL; + } g_mutex_unlock(priv->lock); return volume; @@ -604,7 +611,14 @@ GVirStorageVol *gvir_storage_pool_create_volume } g_mutex_lock(priv->lock); - g_hash_table_insert(priv->volumes, g_strdup(name), volume); + if (priv->volumes != NULL) { + g_hash_table_insert(priv->volumes, g_strdup(name), volume); + } else { + g_warn_if_reached(); + g_object_unref(G_OBJECT(volume)); + g_mutex_unlock(priv->lock); + return NULL; + } g_mutex_unlock(priv->lock); return g_object_ref(volume); -- 1.7.12.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list