Use size_t for ndevice in pool source definition

This allows it to be used by the VIR_*_ELEMENT macros.

Also use them for parsing the definiton and remove the redundant
freeing of 'nodeset' before jumping to the cleanup label.
This commit is contained in:
Ján Tomko 2014-03-11 09:13:15 +01:00
parent 20f0cd4ca3
commit 94b57a9de0
2 changed files with 11 additions and 14 deletions

View File

@ -642,23 +642,20 @@ virStoragePoolDefParseSource(xmlXPathContextPtr ctxt,
if (nsource < 0)
goto cleanup;
if (nsource > 0) {
if (VIR_ALLOC_N(source->devices, nsource) < 0) {
VIR_FREE(nodeset);
goto cleanup;
}
for (i = 0; i < nsource; i++) {
char *path = virXMLPropString(nodeset[i], "path");
if (path == NULL) {
VIR_FREE(nodeset);
virStoragePoolSourceDevice dev = { .path = NULL };
dev.path = virXMLPropString(nodeset[i], "path");
if (dev.path == NULL) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing storage pool source device path"));
goto cleanup;
}
source->devices[i].path = path;
if (VIR_APPEND_ELEMENT(source->devices, source->ndevice, dev) < 0) {
virStoragePoolSourceDeviceClear(&dev);
goto cleanup;
}
source->ndevice = nsource;
}
source->dir = virXPathString("string(./dir/@path)", ctxt);

View File

@ -266,7 +266,7 @@ struct _virStoragePoolSource {
virStoragePoolSourceHostPtr hosts;
/* And either one or more devices ... */
int ndevice;
size_t ndevice;
virStoragePoolSourceDevicePtr devices;
/* Or a directory */