Don't overwrite errors in qemuTranslateDiskSourcePool

Both virStoragePoolFree and virStorageVolFree reset the last error,
which might lead to the cryptic message:
An error occurred, but the cause is unknown

When the volume wasn't found, virStorageVolFree was called with NULL,
leading to an error:
invalid storage volume pointer in virStorageVolFree

This patch changes it to:
Storage volume not found: no storage vol with matching name 'tomato'
This commit is contained in:
Ján Tomko 2013-07-24 10:38:20 +02:00
parent 3068244e85
commit 926055474d

View File

@ -1248,6 +1248,7 @@ qemuTranslateDiskSourcePool(virConnectPtr conn,
char *poolxml = NULL;
virStorageVolInfo info;
int ret = -1;
virErrorPtr savedError = NULL;
if (def->type != VIR_DOMAIN_DISK_TYPE_VOLUME)
return 0;
@ -1324,8 +1325,17 @@ qemuTranslateDiskSourcePool(virConnectPtr conn,
def->srcpool->voltype = info.type;
ret = 0;
cleanup:
virStoragePoolFree(pool);
virStorageVolFree(vol);
if (ret < 0)
savedError = virSaveLastError();
if (pool)
virStoragePoolFree(pool);
if (vol)
virStorageVolFree(vol);
if (savedError) {
virSetError(savedError);
virFreeError(savedError);
}
VIR_FREE(poolxml);
virStoragePoolDefFree(pooldef);
return ret;