John Bandhauer wrote:


> A quick look at one use in PyXPCOM shows it also freeing the
> alloc'd iid a couple steps later.

Actually, this one looks bad to me.  I believe the following patch makes it right:

Index: PyIInterfaceInfo.cpp
===================================================================
RCS file: /cvsroot/mozilla/extensions/python/xpcom/src/PyIInterfaceInfo.cpp,v
retrieving revision 1.2
diff -u -r1.2 PyIInterfaceInfo.cpp
--- PyIInterfaceInfo.cpp        2001/02/19 08:31:31     1.2
+++ PyIInterfaceInfo.cpp        2001/03/24 05:12:30
@@ -293,7 +293,9 @@
        nsresult n = pii->GetIIDForParam(mi, &param_info, &piid);
        if (NS_FAILED(n) || piid==nsnull)
                return PyXPCOM_BuildPyException(n);
-       return Py_nsIID::PyObjectFromIID(*piid);
+       PyObject *rc = Py_nsIID::PyObjectFromIID(*piid);
+       nsMemory::Free((void*)piid);
+       return rc;
 }

 static PyObject *PyGetTypeForParam(PyObject *self, PyObject *args)

Mark.


Reply via email to