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);
# 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);