[pywin32-checkins] /hgroot/pywin32/pywin32: Make sure PIDL is freed in case of erro...
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: <pyw...@li...> - 2012-10-13 22:58:57
|
changeset 52a6d13dba29 in /hgroot/pywin32/pywin32 details: http://pywin32.hg.sourceforge.net/hgweb/pywin32/pywin32/hgroot/pywin32/pywin32?cmd=changeset;node=52a6d13dba29 summary: Make sure PIDL is freed in case of error; fix unaligned warning on x64 diffstat: com/win32comext/shell/src/PyIShellFolder.cpp | 7 ++++--- com/win32comext/shell/src/PyIShellFolder2.cpp | 8 +++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diffs (44 lines): diff -r 987270c70afc -r 52a6d13dba29 com/win32comext/shell/src/PyIShellFolder.cpp --- a/com/win32comext/shell/src/PyIShellFolder.cpp Fri Oct 12 16:25:41 2012 -0400 +++ b/com/win32comext/shell/src/PyIShellFolder.cpp Sat Oct 13 18:51:03 2012 -0400 @@ -366,10 +366,11 @@ PY_INTERFACE_PRECALL; hr = pISF->GetDisplayNameOf( pidl, uFlags, &out ); PY_INTERFACE_POSTCALL; - + PyObject *ret; if ( FAILED(hr) ) - return PyCom_BuildPyException(hr, pISF, IID_IShellFolder ); - PyObject *ret = PyObject_FromSTRRET(&out, pidl, TRUE); + ret = PyCom_BuildPyException(hr, pISF, IID_IShellFolder); + else + ret = PyObject_FromSTRRET(&out, pidl, TRUE); PyObject_FreePIDL(pidl); return ret; } diff -r 987270c70afc -r 52a6d13dba29 com/win32comext/shell/src/PyIShellFolder2.cpp --- a/com/win32comext/shell/src/PyIShellFolder2.cpp Fri Oct 12 16:25:41 2012 -0400 +++ b/com/win32comext/shell/src/PyIShellFolder2.cpp Sat Oct 13 18:51:03 2012 -0400 @@ -148,7 +148,7 @@ // @pyparm int|iColumn||Zero based index of column SHELLDETAILS sd; PyObject *obpidl; - LPITEMIDLIST pidl; + ITEMIDLIST *pidl; UINT iColumn; if (!PyArg_ParseTuple(args, "Oi:GetDetailsOf", &obpidl, &iColumn)) return NULL; @@ -158,9 +158,11 @@ PY_INTERFACE_PRECALL; hr = pISF2->GetDetailsOf( pidl, iColumn, &sd ); PY_INTERFACE_POSTCALL; + PyObject *ret; if ( FAILED(hr) ) - return PyCom_BuildPyException(hr, pISF2, IID_IShellFolder2 ); - PyObject *ret = Py_BuildValue("(iiN)", sd.fmt, sd.cxChar, PyObject_FromSTRRET(&sd.str, pidl, TRUE)); + ret = PyCom_BuildPyException(hr, pISF2, IID_IShellFolder2); + else + ret = Py_BuildValue("(iiN)", sd.fmt, sd.cxChar, PyObject_FromSTRRET(&sd.str, pidl, TRUE)); PyObject_FreePIDL(pidl); return ret; } |