[pywin32-checkins] pywin32/win32/src PyHANDLE.cpp,1.8,1.9
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
|
From: Roger U. <ru...@us...> - 2004-09-05 15:43:27
|
Update of /cvsroot/pywin32/pywin32/win32/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10742/win32/src Modified Files: PyHANDLE.cpp Log Message: Let PyWinObject_AsHANDLE accept any object that can be converted to an int - for subclasses of PyHANDLE that don't use PyHANDLEType Index: PyHANDLE.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/src/PyHANDLE.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** PyHANDLE.cpp 7 Nov 2003 03:58:17 -0000 1.8 --- PyHANDLE.cpp 5 Sep 2004 15:43:17 -0000 1.9 *************** *** 26,34 **** PyHANDLE *pH = (PyHANDLE *)ob; *pHANDLE = (HANDLE)(*pH); ! } else if (PyInt_Check(ob)) { // Support integer objects for b/w compat. *pHANDLE = (HANDLE)PyInt_AsLong(ob); ! } else { ! PyErr_SetString(PyExc_TypeError, "The object is not a PyHANDLE object"); ! return FALSE; } return TRUE; --- 26,35 ---- PyHANDLE *pH = (PyHANDLE *)ob; *pHANDLE = (HANDLE)(*pH); ! } else{ // Support integer objects for b/w compat. *pHANDLE = (HANDLE)PyInt_AsLong(ob); ! if ((*pHANDLE==(HANDLE)-1)&&PyErr_Occurred()){ ! PyErr_SetString(PyExc_TypeError, "The object is not a PyHANDLE object"); ! return FALSE; ! } } return TRUE; *************** *** 42,57 **** BOOL PyWinObject_CloseHANDLE(PyObject *obHandle) { ! BOOL ok; if (PyHANDLE_Check(obHandle)) ! // Python error already set. ! ok = ((PyHANDLE *)obHandle)->Close(); ! else if PyInt_Check(obHandle) { ! ok = ::CloseHandle((HANDLE)PyInt_AsLong(obHandle)); ! if (!ok) ! PyWin_SetAPIError("CloseHandle"); ! } else { ! PyErr_Format(PyExc_TypeError, "A handle must be a HANDLE object or an integer (got %s)", obHandle->ob_type->tp_name); return FALSE; ! } return ok; } --- 43,57 ---- BOOL PyWinObject_CloseHANDLE(PyObject *obHandle) { ! // PyWinObject_AsHANDLE checks this also, but need to make sure an override Close method is called if (PyHANDLE_Check(obHandle)) ! return ((PyHANDLE *)obHandle)->Close(); // Python error already set. ! ! HANDLE h; ! BOOL ok; ! if (!PyWinObject_AsHANDLE(obHandle, &h, FALSE)) return FALSE; ! ok=::CloseHandle(h); // This can still trigger an Invalid Handle exception in debug mode ! if (!ok) ! PyWin_SetAPIError("CloseHandle"); return ok; } *************** *** 242,247 **** --- 242,249 ---- { long result = ((PyHANDLE *)ob)->asLong(); + /* PyHANDLE::asLong sets no errors if ( result == -1 ) return NULL; + */ return PyInt_FromLong(result); } |