On 12/17/2010 11:56 AM, Matthias Bolte wrote: > XPCOM returns an array as a pointer to an array of pointers to the > actual items. When the array isn't needed anymore the items are > released, but the actual array containing the pointers to the items > was not freed and leaked. > > Free the actual array using ComUnallocMem. > > This doesn't affect MSCOM as SafeArrayDestroy releases all items > and frees the array. > --- > src/vbox/vbox_XPCOMCGlue.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/src/vbox/vbox_XPCOMCGlue.c b/src/vbox/vbox_XPCOMCGlue.c > index 5992350..dcaf682 100644 > --- a/src/vbox/vbox_XPCOMCGlue.c > +++ b/src/vbox/vbox_XPCOMCGlue.c > @@ -339,6 +339,8 @@ vboxArrayRelease(vboxArray *array) > } > } > > + pVBoxFuncs_v2_2->pfnComUnallocMem(array->items); > + ACK. Was this the leak you were telling me on IRC that exists even in the XPCOM example code? And certainly easier to plug given the wrapper function you created in 4/6 than to plug at every call site. -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list