1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-01-11 09:17:52 +03:00

vbox: Fix passing an empty IMedium* array to IMachine::Delete

vboxArray is not castable to a COM item type. vboxArray is a
wrapper around the XPCOM and MSCOM specific array handling.

In this case we can avoid passing NULL as an empty array to
IMachine::Delete by passing a dummy IMedium* array with a single
NULL item.
This commit is contained in:
Matthias Bolte 2012-04-22 10:31:33 +02:00
parent 52ee7c2ba3
commit a9bc123ea3

View File

@ -5294,11 +5294,10 @@ vboxDomainUndefineFlags(virDomainPtr dom, unsigned int flags)
((IMachine_Delete)machine->vtbl->Delete)(machine, &safeArray, &progress);
# else
union {
vboxArray array;
IMedium *medium;
} u = { .array = VBOX_ARRAY_INITIALIZER };
machine->vtbl->Delete(machine, 0, &u.medium, &progress);
/* XPCOM doesn't like NULL as an array, even when the array size is 0.
* Instead pass it a dummy array to avoid passing NULL. */
IMedium *array[] = { NULL };
machine->vtbl->Delete(machine, 0, array, &progress);
# endif
if (progress != NULL) {
progress->vtbl->WaitForCompletion(progress, -1);