Update of /cvsroot/pywin32/pywin32/com/win32com/src/extensions
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26502
Modified Files:
PyIDataObject.cpp PySTGMEDIUM.cpp
Log Message:
Explicitly set to zero our STGMEDIUM, and check ones passed to us.
Index: PySTGMEDIUM.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PySTGMEDIUM.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** PySTGMEDIUM.cpp 12 Jun 2004 13:31:50 -0000 1.5
--- PySTGMEDIUM.cpp 20 May 2005 23:25:49 -0000 1.6
***************
*** 138,142 ****
BOOL PySTGMEDIUM::CopyTo(STGMEDIUM *pDest)
{
! assert(pDest->tymed==0);
switch (medium.tymed) {
// we can't just copy these handles, and there is no easy way I see
--- 138,143 ----
BOOL PySTGMEDIUM::CopyTo(STGMEDIUM *pDest)
{
! // caller is responsible for ensuring this is clean.
! assert(pDest->tymed==0 && pDest->pUnkForRelease==0 && pDest->hGlobal == 0);
switch (medium.tymed) {
// we can't just copy these handles, and there is no easy way I see
Index: PyIDataObject.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIDataObject.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** PyIDataObject.cpp 12 Jun 2004 13:31:50 -0000 1.5
--- PyIDataObject.cpp 20 May 2005 23:25:49 -0000 1.6
***************
*** 322,325 ****
--- 322,327 ----
/* [out] */ STGMEDIUM * pmedium)
{
+ if (!pmedium)
+ return E_POINTER;
PY_GATEWAY_METHOD;
PyObject *obpformatetcIn = PyObject_FromFORMATETC(pformatetcIn);
***************
*** 332,335 ****
--- 334,340 ----
if (PySTGMEDIUM_Check(result)) {
PySTGMEDIUM *pym = (PySTGMEDIUM *)result;
+ // Documentation says pmedium is 'out' - generally it will have empty
+ // data, but not always.
+ memset(pmedium, 0, sizeof(*pmedium));
pym->CopyTo(pmedium);
}
|