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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]