Update of /cvsroot/pywin32/pywin32/com/win32comext/shell/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30348/src
Modified Files:
PyIExtractIcon.cpp PyIExtractIconW.cpp
Log Message:
Use "handle" functions to get HICON from IExtractIconA/W and IExtractIcon
is explicitly for the ascii version of the interface.
Index: PyIExtractIconW.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32comext/shell/src/PyIExtractIconW.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** PyIExtractIconW.cpp 8 Jan 2008 00:41:03 -0000 1.1
--- PyIExtractIconW.cpp 26 Jul 2008 02:31:48 -0000 1.2
***************
*** 56,60 ****
if (hr==S_FALSE)
return Py_BuildValue("OO", Py_None, Py_None);
! return Py_BuildValue("ii", hiconLarge, hiconSmall);
// @rdesc The result is (hicon_large, hicon_small), or
// (None,None) if the underlying function returns S_FALSE, indicating
--- 56,61 ----
if (hr==S_FALSE)
return Py_BuildValue("OO", Py_None, Py_None);
! return Py_BuildValue("NN", PyWinLong_FromHANDLE(hiconLarge),
! PyWinLong_FromHANDLE(hiconSmall));
// @rdesc The result is (hicon_large, hicon_small), or
// (None,None) if the underlying function returns S_FALSE, indicating
***************
*** 125,129 ****
hr = PyInt_AsLong(result);
else {
! PyArg_ParseTuple(result, "ii", phiconLarge, phiconSmall);
hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE("Extract");
}
--- 126,136 ----
hr = PyInt_AsLong(result);
else {
! PyObject *oblarge, *obsmall;
! if (PyArg_ParseTuple(result, "OO", &oblarge, &obsmall) &&
! PyWinObject_AsHANDLE(oblarge, (HANDLE *)phiconLarge) &&
! PyWinObject_AsHANDLE(obsmall, (HANDLE *)phiconSmall)) {
! // we worked - no error should be present!
! assert(!PyErr_Occurred());
! }
hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE("Extract");
}
Index: PyIExtractIcon.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32comext/shell/src/PyIExtractIcon.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** PyIExtractIcon.cpp 26 Jan 2005 22:31:09 -0000 1.4
--- PyIExtractIcon.cpp 26 Jul 2008 02:31:48 -0000 1.5
***************
*** 52,56 ****
if (hr==S_FALSE)
return Py_BuildValue("OO", Py_None, Py_None);
! return Py_BuildValue("ii", hiconLarge, hiconSmall);
// @rdesc The result is (hicon_large, hicon_small), or
// (None,None) if the underlying function returns S_FALSE, indicating
--- 52,57 ----
if (hr==S_FALSE)
return Py_BuildValue("OO", Py_None, Py_None);
! return Py_BuildValue("NN", PyWinLong_FromHANDLE(hiconLarge),
! PyWinLong_FromHANDLE(hiconSmall));
// @rdesc The result is (hicon_large, hicon_small), or
// (None,None) if the underlying function returns S_FALSE, indicating
***************
*** 113,117 ****
PY_GATEWAY_METHOD;
PyObject *obpszFile;
! obpszFile = PyWinObject_FromTCHAR((LPTSTR)pszFile);
PyObject *result;
HRESULT hr=InvokeViaPolicy("Extract", &result, "Oii", obpszFile, nIconIndex, nIconSize);
--- 114,118 ----
PY_GATEWAY_METHOD;
PyObject *obpszFile;
! obpszFile = PyString_FromString((LPTSTR)pszFile);
PyObject *result;
HRESULT hr=InvokeViaPolicy("Extract", &result, "Oii", obpszFile, nIconIndex, nIconSize);
***************
*** 121,125 ****
hr = PyInt_AsLong(result);
else {
! PyArg_ParseTuple(result, "ii", phiconLarge, phiconSmall);
hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE("Extract");
}
--- 122,132 ----
hr = PyInt_AsLong(result);
else {
! PyObject *oblarge, *obsmall;
! if (PyArg_ParseTuple(result, "OO", &oblarge, &obsmall) &&
! PyWinObject_AsHANDLE(oblarge, (HANDLE *)phiconLarge) &&
! PyWinObject_AsHANDLE(obsmall, (HANDLE *)phiconSmall)) {
! // we worked - no error should be present!
! assert(!PyErr_Occurred());
! }
hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE("Extract");
}
***************
*** 149,161 ****
else {
if (PyArg_ParseTuple(result, "Oii", &obFileName, piIndex, pflags)) {
! TCHAR *filename;
! if (PyWinObject_AsTCHAR(obFileName, &filename)) {
! #ifdef UNICODE
! // WTF - _tcsncpy resolving to strncpy?!
! wcsncpy(szIconFile, filename, cchMax);
! #else
! _tcsncpy(szIconFile, filename, cchMax);
! #endif
! PyWinObject_FreeTCHAR(filename);
}
}
--- 156,163 ----
else {
if (PyArg_ParseTuple(result, "Oii", &obFileName, piIndex, pflags)) {
! char *filename;
! if (PyWinObject_AsString(obFileName, &filename)) {
! strncpy(szIconFile, filename, cchMax);
! PyWinObject_FreeString(filename);
}
}
|