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 committed by Cole Robinson
parent 372a14c673
commit 3cf61dd5f0

View File

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