Update of /cvsroot/pywin32/pywin32/com/win32com/src/extensions
In directory sc8-pr-cvs1:/tmp/cvs-serv3671/extensions
Modified Files:
PyIMoniker.cpp
Log Message:
Fix a reference leak in the PyIMoniker enum implementation. Make
a moniker an iterator
Index: PyIMoniker.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIMoniker.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** PyIMoniker.cpp 26 Nov 1999 04:01:05 -0000 1.3
--- PyIMoniker.cpp 2 Nov 2003 09:56:42 -0000 1.4
***************
*** 58,62 ****
for ( i = celtFetched; i--; )
{
! PyObject *ob = PyCom_PyObjectFromIUnknown(rgVar[i], IID_IMoniker, TRUE);
if ( ob == NULL )
{
--- 58,62 ----
for ( i = celtFetched; i--; )
{
! PyObject *ob = PyCom_PyObjectFromIUnknown(rgVar[i], IID_IMoniker, FALSE);
if ( ob == NULL )
{
***************
*** 139,143 ****
};
! PyComTypeObject PyIEnumMoniker::type("PyIEnumMoniker",
&PyIUnknown::type, // @base PyIEnumMoniker|PyIUnknown
sizeof(PyIEnumMoniker),
--- 139,143 ----
};
! PyComEnumTypeObject PyIEnumMoniker::type("PyIEnumMoniker",
&PyIUnknown::type, // @base PyIEnumMoniker|PyIUnknown
sizeof(PyIEnumMoniker),
***************
*** 344,350 ****
PyObject *PyIMoniker::Enum(PyObject *self, PyObject *args)
{
! // @pyparm int|fForward||If TRUE, enumerates the monikers from left to right. If FALSE, enumerates from right to left.
! int fForward;
! if (!PyArg_ParseTuple(args, "i:Enum", &fForward))
return NULL;
--- 344,350 ----
PyObject *PyIMoniker::Enum(PyObject *self, PyObject *args)
{
! // @pyparm int|fForward|True|If TRUE, enumerates the monikers from left to right. If FALSE, enumerates from right to left.
! int fForward = TRUE;
! if (!PyArg_ParseTuple(args, "|i:Enum", &fForward))
return NULL;
***************
*** 432,438 ****
};
! PyComTypeObject PyIMoniker::type("PyIMoniker",
&PyIPersistStream::type, // @base PyIMoniker|PyIPersistStream
sizeof(PyIMoniker),
PyIMoniker_methods,
! GET_PYCOM_CTOR(PyIMoniker));
--- 432,439 ----
};
! PyComEnumProviderTypeObject PyIMoniker::type("PyIMoniker",
&PyIPersistStream::type, // @base PyIMoniker|PyIPersistStream
sizeof(PyIMoniker),
PyIMoniker_methods,
! GET_PYCOM_CTOR(PyIMoniker),
! "Enum");
|