mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
conf: Introduce VIR_DEFINE_AUTOPTR_FUNC for virStoragePoolDef
Let's make use of the auto __cleanup capabilities cleaning up any now unnecessary goto paths. Signed-off-by: John Ferlan <jferlan@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
d2ddcdc1a2
commit
2f92d59c78
@ -30988,12 +30988,12 @@ int
|
|||||||
virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def)
|
virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def)
|
||||||
{
|
{
|
||||||
virConnectPtr conn = NULL;
|
virConnectPtr conn = NULL;
|
||||||
virStoragePoolDefPtr pooldef = NULL;
|
|
||||||
virStoragePoolPtr pool = NULL;
|
virStoragePoolPtr pool = NULL;
|
||||||
virStorageVolPtr vol = NULL;
|
virStorageVolPtr vol = NULL;
|
||||||
char *poolxml = NULL;
|
char *poolxml = NULL;
|
||||||
virStorageVolInfo info;
|
virStorageVolInfo info;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) pooldef = NULL;
|
||||||
|
|
||||||
if (def->src->type != VIR_STORAGE_TYPE_VOLUME)
|
if (def->src->type != VIR_STORAGE_TYPE_VOLUME)
|
||||||
return 0;
|
return 0;
|
||||||
@ -31152,7 +31152,6 @@ virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def)
|
|||||||
virObjectUnref(pool);
|
virObjectUnref(pool);
|
||||||
virObjectUnref(vol);
|
virObjectUnref(vol);
|
||||||
VIR_FREE(poolxml);
|
VIR_FREE(poolxml);
|
||||||
virStoragePoolDefFree(pooldef);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -737,12 +737,12 @@ virStoragePoolDefPtr
|
|||||||
virStoragePoolDefParseXML(xmlXPathContextPtr ctxt)
|
virStoragePoolDefParseXML(xmlXPathContextPtr ctxt)
|
||||||
{
|
{
|
||||||
virStoragePoolOptionsPtr options;
|
virStoragePoolOptionsPtr options;
|
||||||
virStoragePoolDefPtr def;
|
|
||||||
virStoragePoolDefPtr ret = NULL;
|
virStoragePoolDefPtr ret = NULL;
|
||||||
xmlNodePtr source_node;
|
xmlNodePtr source_node;
|
||||||
char *type = NULL;
|
char *type = NULL;
|
||||||
char *uuid = NULL;
|
char *uuid = NULL;
|
||||||
char *target_path = NULL;
|
char *target_path = NULL;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) def = NULL;
|
||||||
|
|
||||||
if (VIR_ALLOC(def) < 0)
|
if (VIR_ALLOC(def) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -883,7 +883,6 @@ virStoragePoolDefParseXML(xmlXPathContextPtr ctxt)
|
|||||||
|
|
||||||
VIR_STEAL_PTR(ret, def);
|
VIR_STEAL_PTR(ret, def);
|
||||||
cleanup:
|
cleanup:
|
||||||
virStoragePoolDefFree(def);
|
|
||||||
VIR_FREE(uuid);
|
VIR_FREE(uuid);
|
||||||
VIR_FREE(type);
|
VIR_FREE(type);
|
||||||
VIR_FREE(target_path);
|
VIR_FREE(target_path);
|
||||||
|
@ -461,6 +461,7 @@ VIR_ENUM_DECL(virStoragePartedFs);
|
|||||||
VIR_CONNECT_LIST_STORAGE_POOLS_FILTERS_POOL_TYPE)
|
VIR_CONNECT_LIST_STORAGE_POOLS_FILTERS_POOL_TYPE)
|
||||||
|
|
||||||
VIR_DEFINE_AUTOPTR_FUNC(virStoragePoolSource, virStoragePoolSourceFree);
|
VIR_DEFINE_AUTOPTR_FUNC(virStoragePoolSource, virStoragePoolSourceFree);
|
||||||
|
VIR_DEFINE_AUTOPTR_FUNC(virStoragePoolDef, virStoragePoolDefFree);
|
||||||
VIR_DEFINE_AUTOPTR_FUNC(virStorageVolDef, virStorageVolDefFree);
|
VIR_DEFINE_AUTOPTR_FUNC(virStorageVolDef, virStorageVolDefFree);
|
||||||
|
|
||||||
#endif /* LIBVIRT_STORAGE_CONF_H */
|
#endif /* LIBVIRT_STORAGE_CONF_H */
|
||||||
|
@ -1579,8 +1579,8 @@ virStoragePoolObjLoad(virStoragePoolObjListPtr pools,
|
|||||||
const char *path,
|
const char *path,
|
||||||
const char *autostartLink)
|
const char *autostartLink)
|
||||||
{
|
{
|
||||||
virStoragePoolDefPtr def;
|
|
||||||
virStoragePoolObjPtr obj;
|
virStoragePoolObjPtr obj;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) def = NULL;
|
||||||
|
|
||||||
if (!(def = virStoragePoolDefParseFile(path)))
|
if (!(def = virStoragePoolDefParseFile(path)))
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -1590,14 +1590,12 @@ virStoragePoolObjLoad(virStoragePoolObjListPtr pools,
|
|||||||
_("Storage pool config filename '%s' does "
|
_("Storage pool config filename '%s' does "
|
||||||
"not match pool name '%s'"),
|
"not match pool name '%s'"),
|
||||||
path, def->name);
|
path, def->name);
|
||||||
virStoragePoolDefFree(def);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(obj = virStoragePoolObjAssignDef(pools, def, false))) {
|
if (!(obj = virStoragePoolObjAssignDef(pools, def, false)))
|
||||||
virStoragePoolDefFree(def);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
def = NULL;
|
||||||
|
|
||||||
VIR_FREE(obj->configFile); /* for driver reload */
|
VIR_FREE(obj->configFile); /* for driver reload */
|
||||||
if (VIR_STRDUP(obj->configFile, path) < 0) {
|
if (VIR_STRDUP(obj->configFile, path) < 0) {
|
||||||
@ -1625,39 +1623,40 @@ virStoragePoolObjLoadState(virStoragePoolObjListPtr pools,
|
|||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
char *stateFile = NULL;
|
char *stateFile = NULL;
|
||||||
virStoragePoolDefPtr def = NULL;
|
|
||||||
virStoragePoolObjPtr obj = NULL;
|
virStoragePoolObjPtr obj = NULL;
|
||||||
xmlDocPtr xml = NULL;
|
xmlDocPtr xml = NULL;
|
||||||
xmlXPathContextPtr ctxt = NULL;
|
xmlXPathContextPtr ctxt = NULL;
|
||||||
xmlNodePtr node = NULL;
|
xmlNodePtr node = NULL;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) def = NULL;
|
||||||
|
|
||||||
if (!(stateFile = virFileBuildPath(stateDir, name, ".xml")))
|
if (!(stateFile = virFileBuildPath(stateDir, name, ".xml")))
|
||||||
goto error;
|
return NULL;
|
||||||
|
|
||||||
if (!(xml = virXMLParseCtxt(stateFile, NULL, _("(pool state)"), &ctxt)))
|
if (!(xml = virXMLParseCtxt(stateFile, NULL, _("(pool state)"), &ctxt)))
|
||||||
goto error;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(node = virXPathNode("//pool", ctxt))) {
|
if (!(node = virXPathNode("//pool", ctxt))) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
_("Could not find any 'pool' element in state file"));
|
_("Could not find any 'pool' element in state file"));
|
||||||
goto error;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctxt->node = node;
|
ctxt->node = node;
|
||||||
if (!(def = virStoragePoolDefParseXML(ctxt)))
|
if (!(def = virStoragePoolDefParseXML(ctxt)))
|
||||||
goto error;
|
goto cleanup;
|
||||||
|
|
||||||
if (STRNEQ(name, def->name)) {
|
if (STRNEQ(name, def->name)) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("Storage pool state file '%s' does not match "
|
_("Storage pool state file '%s' does not match "
|
||||||
"pool name '%s'"),
|
"pool name '%s'"),
|
||||||
stateFile, def->name);
|
stateFile, def->name);
|
||||||
goto error;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create the object */
|
/* create the object */
|
||||||
if (!(obj = virStoragePoolObjAssignDef(pools, def, true)))
|
if (!(obj = virStoragePoolObjAssignDef(pools, def, true)))
|
||||||
goto error;
|
goto cleanup;
|
||||||
|
def = NULL;
|
||||||
|
|
||||||
/* XXX: future handling of some additional useful status data,
|
/* XXX: future handling of some additional useful status data,
|
||||||
* for now, if a status file for a pool exists, the pool will be marked
|
* for now, if a status file for a pool exists, the pool will be marked
|
||||||
@ -1671,10 +1670,6 @@ virStoragePoolObjLoadState(virStoragePoolObjListPtr pools,
|
|||||||
xmlFreeDoc(xml);
|
xmlFreeDoc(xml);
|
||||||
xmlXPathFreeContext(ctxt);
|
xmlXPathFreeContext(ctxt);
|
||||||
return obj;
|
return obj;
|
||||||
|
|
||||||
error:
|
|
||||||
virStoragePoolDefFree(def);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1952,11 +1952,11 @@ phypStorageVolCreateXML(virStoragePoolPtr pool,
|
|||||||
{
|
{
|
||||||
virCheckFlags(0, NULL);
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
virStoragePoolDefPtr spdef = NULL;
|
|
||||||
virStorageVolPtr vol = NULL;
|
virStorageVolPtr vol = NULL;
|
||||||
virStorageVolPtr dup_vol = NULL;
|
virStorageVolPtr dup_vol = NULL;
|
||||||
char *key = NULL;
|
char *key = NULL;
|
||||||
VIR_AUTOPTR(virStorageVolDef) voldef = NULL;
|
VIR_AUTOPTR(virStorageVolDef) voldef = NULL;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) spdef = NULL;
|
||||||
|
|
||||||
if (VIR_ALLOC(spdef) < 0)
|
if (VIR_ALLOC(spdef) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -2031,13 +2031,11 @@ phypStorageVolCreateXML(virStoragePoolPtr pool,
|
|||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
VIR_FREE(key);
|
VIR_FREE(key);
|
||||||
virStoragePoolDefFree(spdef);
|
|
||||||
|
|
||||||
return vol;
|
return vol;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
VIR_FREE(key);
|
VIR_FREE(key);
|
||||||
virStoragePoolDefFree(spdef);
|
|
||||||
virObjectUnref(vol);
|
virObjectUnref(vol);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -690,7 +690,6 @@ storagePoolCreateXML(virConnectPtr conn,
|
|||||||
const char *xml,
|
const char *xml,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
virStoragePoolDefPtr newDef;
|
|
||||||
virStoragePoolObjPtr obj = NULL;
|
virStoragePoolObjPtr obj = NULL;
|
||||||
virStoragePoolDefPtr def;
|
virStoragePoolDefPtr def;
|
||||||
virStoragePoolPtr pool = NULL;
|
virStoragePoolPtr pool = NULL;
|
||||||
@ -698,6 +697,7 @@ storagePoolCreateXML(virConnectPtr conn,
|
|||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
char *stateFile = NULL;
|
char *stateFile = NULL;
|
||||||
unsigned int build_flags = 0;
|
unsigned int build_flags = 0;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) newDef = NULL;
|
||||||
|
|
||||||
virCheckFlags(VIR_STORAGE_POOL_CREATE_WITH_BUILD |
|
virCheckFlags(VIR_STORAGE_POOL_CREATE_WITH_BUILD |
|
||||||
VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE |
|
VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE |
|
||||||
@ -762,7 +762,6 @@ storagePoolCreateXML(virConnectPtr conn,
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(stateFile);
|
VIR_FREE(stateFile);
|
||||||
virStoragePoolDefFree(newDef);
|
|
||||||
virObjectEventStateQueue(driver->storageEventState, event);
|
virObjectEventStateQueue(driver->storageEventState, event);
|
||||||
virStoragePoolObjEndAPI(&obj);
|
virStoragePoolObjEndAPI(&obj);
|
||||||
return pool;
|
return pool;
|
||||||
@ -779,11 +778,11 @@ storagePoolDefineXML(virConnectPtr conn,
|
|||||||
const char *xml,
|
const char *xml,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
virStoragePoolDefPtr newDef;
|
|
||||||
virStoragePoolObjPtr obj = NULL;
|
virStoragePoolObjPtr obj = NULL;
|
||||||
virStoragePoolDefPtr def;
|
virStoragePoolDefPtr def;
|
||||||
virStoragePoolPtr pool = NULL;
|
virStoragePoolPtr pool = NULL;
|
||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) newDef = NULL;
|
||||||
|
|
||||||
virCheckFlags(0, NULL);
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
@ -822,7 +821,6 @@ storagePoolDefineXML(virConnectPtr conn,
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virObjectEventStateQueue(driver->storageEventState, event);
|
virObjectEventStateQueue(driver->storageEventState, event);
|
||||||
virStoragePoolDefFree(newDef);
|
|
||||||
virStoragePoolObjEndAPI(&obj);
|
virStoragePoolObjEndAPI(&obj);
|
||||||
return pool;
|
return pool;
|
||||||
}
|
}
|
||||||
|
@ -4472,11 +4472,11 @@ testStoragePoolCreateXML(virConnectPtr conn,
|
|||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
testDriverPtr privconn = conn->privateData;
|
testDriverPtr privconn = conn->privateData;
|
||||||
virStoragePoolDefPtr newDef;
|
|
||||||
virStoragePoolObjPtr obj = NULL;
|
virStoragePoolObjPtr obj = NULL;
|
||||||
virStoragePoolDefPtr def;
|
virStoragePoolDefPtr def;
|
||||||
virStoragePoolPtr pool = NULL;
|
virStoragePoolPtr pool = NULL;
|
||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) newDef = NULL;
|
||||||
|
|
||||||
virCheckFlags(0, NULL);
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
@ -4525,7 +4525,6 @@ testStoragePoolCreateXML(virConnectPtr conn,
|
|||||||
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
|
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virStoragePoolDefFree(newDef);
|
|
||||||
virObjectEventStateQueue(privconn->eventState, event);
|
virObjectEventStateQueue(privconn->eventState, event);
|
||||||
virStoragePoolObjEndAPI(&obj);
|
virStoragePoolObjEndAPI(&obj);
|
||||||
virObjectUnlock(privconn);
|
virObjectUnlock(privconn);
|
||||||
@ -4539,11 +4538,11 @@ testStoragePoolDefineXML(virConnectPtr conn,
|
|||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
testDriverPtr privconn = conn->privateData;
|
testDriverPtr privconn = conn->privateData;
|
||||||
virStoragePoolDefPtr newDef;
|
|
||||||
virStoragePoolObjPtr obj = NULL;
|
virStoragePoolObjPtr obj = NULL;
|
||||||
virStoragePoolDefPtr def;
|
virStoragePoolDefPtr def;
|
||||||
virStoragePoolPtr pool = NULL;
|
virStoragePoolPtr pool = NULL;
|
||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) newDef = NULL;
|
||||||
|
|
||||||
virCheckFlags(0, NULL);
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
@ -4574,7 +4573,6 @@ testStoragePoolDefineXML(virConnectPtr conn,
|
|||||||
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
|
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virStoragePoolDefFree(newDef);
|
|
||||||
virObjectEventStateQueue(privconn->eventState, event);
|
virObjectEventStateQueue(privconn->eventState, event);
|
||||||
virStoragePoolObjEndAPI(&obj);
|
virStoragePoolObjEndAPI(&obj);
|
||||||
virObjectUnlock(privconn);
|
virObjectUnlock(privconn);
|
||||||
|
@ -59,7 +59,7 @@ test_node_info_parser(const void *opaque)
|
|||||||
collie_test test = data->data;
|
collie_test test = data->data;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
char *output = NULL;
|
char *output = NULL;
|
||||||
virStoragePoolDefPtr pool = NULL;
|
VIR_AUTOPTR(virStoragePoolDef) pool = NULL;
|
||||||
|
|
||||||
if (!(pool = virStoragePoolDefParseFile(data->poolxml)))
|
if (!(pool = virStoragePoolDefParseFile(data->poolxml)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -82,7 +82,6 @@ test_node_info_parser(const void *opaque)
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(output);
|
VIR_FREE(output);
|
||||||
virStoragePoolDefFree(pool);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +92,7 @@ test_vdi_list_parser(const void *opaque)
|
|||||||
collie_test test = data->data;
|
collie_test test = data->data;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
char *output = NULL;
|
char *output = NULL;
|
||||||
virStoragePoolDefPtr pool = NULL;
|
VIR_AUTOPTR(virStoragePoolDef) pool = NULL;
|
||||||
VIR_AUTOPTR(virStorageVolDef) vol = NULL;
|
VIR_AUTOPTR(virStorageVolDef) vol = NULL;
|
||||||
|
|
||||||
if (!(pool = virStoragePoolDefParseFile(data->poolxml)))
|
if (!(pool = virStoragePoolDefParseFile(data->poolxml)))
|
||||||
@ -120,7 +119,6 @@ test_vdi_list_parser(const void *opaque)
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(output);
|
VIR_FREE(output);
|
||||||
virStoragePoolDefFree(pool);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ testCompareXMLToXMLFiles(const char *inxml, const char *outxml)
|
|||||||
{
|
{
|
||||||
char *actual = NULL;
|
char *actual = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
virStoragePoolDefPtr dev = NULL;
|
VIR_AUTOPTR(virStoragePoolDef) dev = NULL;
|
||||||
|
|
||||||
if (!(dev = virStoragePoolDefParseFile(inxml)))
|
if (!(dev = virStoragePoolDefParseFile(inxml)))
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -35,7 +35,6 @@ testCompareXMLToXMLFiles(const char *inxml, const char *outxml)
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
VIR_FREE(actual);
|
VIR_FREE(actual);
|
||||||
virStoragePoolDefFree(dev);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,10 +49,10 @@ testCompareXMLToArgvFiles(bool shouldFail,
|
|||||||
virCommandPtr cmd = NULL;
|
virCommandPtr cmd = NULL;
|
||||||
|
|
||||||
virStoragePoolDefPtr def = NULL;
|
virStoragePoolDefPtr def = NULL;
|
||||||
virStoragePoolDefPtr inputpool = NULL;
|
|
||||||
virStoragePoolObjPtr obj = NULL;
|
virStoragePoolObjPtr obj = NULL;
|
||||||
VIR_AUTOPTR(virStorageVolDef) vol = NULL;
|
VIR_AUTOPTR(virStorageVolDef) vol = NULL;
|
||||||
VIR_AUTOPTR(virStorageVolDef) inputvol = NULL;
|
VIR_AUTOPTR(virStorageVolDef) inputvol = NULL;
|
||||||
|
VIR_AUTOPTR(virStoragePoolDef) inputpool = NULL;
|
||||||
|
|
||||||
if (!(def = virStoragePoolDefParseFile(poolxml)))
|
if (!(def = virStoragePoolDefParseFile(poolxml)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -139,7 +139,6 @@ testCompareXMLToArgvFiles(bool shouldFail,
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virStoragePoolDefFree(inputpool);
|
|
||||||
virCommandFree(cmd);
|
virCommandFree(cmd);
|
||||||
VIR_FREE(actualCmdline);
|
VIR_FREE(actualCmdline);
|
||||||
virStoragePoolObjEndAPI(&obj);
|
virStoragePoolObjEndAPI(&obj);
|
||||||
|
@ -19,7 +19,7 @@ testCompareXMLToXMLFiles(const char *poolxml, const char *inxml,
|
|||||||
{
|
{
|
||||||
char *actual = NULL;
|
char *actual = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
virStoragePoolDefPtr pool = NULL;
|
VIR_AUTOPTR(virStoragePoolDef) pool = NULL;
|
||||||
VIR_AUTOPTR(virStorageVolDef) dev = NULL;
|
VIR_AUTOPTR(virStorageVolDef) dev = NULL;
|
||||||
|
|
||||||
if (!(pool = virStoragePoolDefParseFile(poolxml)))
|
if (!(pool = virStoragePoolDefParseFile(poolxml)))
|
||||||
@ -38,7 +38,6 @@ testCompareXMLToXMLFiles(const char *poolxml, const char *inxml,
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
VIR_FREE(actual);
|
VIR_FREE(actual);
|
||||||
virStoragePoolDefFree(pool);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user