On Sunday 22 April 2012 10:35:59 Matthias Bolte wrote:
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.
---
Jean-Baptiste, I can not reproduce the assertion you mentioned, or
I don't know where to look for it. So could you verify that is patch
avoids this assertion?
src/vbox/vbox_tmpl.c | 9 ++++-----
1 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c
index 57c18a4..4b0ee2e 100644
--- a/src/vbox/vbox_tmpl.c
+++ b/src/vbox/vbox_tmpl.c
@@ -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);
The patch is good, I don't get the assertion anymore.
--
Jean-Baptiste ROUAULT
Ingénieur R&D - diateam : Architectes de l'information
Phone : +33 (0)2 98 050 050 Fax : +33 (0)2 98 050 051