if (VIR_ALLOC_N(def->hostdevs, def->nhostdevs) < 0)
goto release_filters;
+ for (i = 0; i < def->nhostdevs; i++) {
+ def->hostdevs[i] = virDomainHostdevDefAlloc();
+ if (!def->hostdevs[i])
+ goto release_hostdevs;
+ }
+
for (i = 0; i < deviceFilters.count; i++) {
PRBool active = PR_FALSE;
IUSBDeviceFilter *deviceFilter = deviceFilters.items[i];
if (!active)
continue;
- def->hostdevs[USBFilterCount] = virDomainHostdevDefAlloc();
- if (!def->hostdevs[USBFilterCount])
- continue;
-
def->hostdevs[USBFilterCount]->mode =
VIR_DOMAIN_HOSTDEV_MODE_SUBSYS;
def->hostdevs[USBFilterCount]->source.subsys.type =
#else
VBOX_RELEASE(USBDeviceFilters);
#endif
+
+ return;
+
+release_hostdevs:
+ for (i = 0; i < def->nhostdevs; i++)
+ virDomainHostdevDefFree(def->hostdevs[i]);
+ VIR_FREE(def->hostdevs);
+
+ goto release_filters;
}
static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) {