Staging
v0.5.1
v0.5.1
https://github.com/python/cpython
Revision 9cac7b6117a61aac15c9d5ea3b85e7d3d5097a69 authored by Thomas Heller on 06 June 2008, 09:31:40 UTC, committed by Thomas Heller on 06 June 2008, 09:31:40 UTC
svn+ssh://pythondev@svn.python.org/python/trunk ........ r63977 | thomas.heller | 2008-06-06 10:33:46 +0200 (Fri, 06 Jun 2008) | 31 lines Issue #1798: Add ctypes calling convention that allows safe access of errno. ctypes maintains thread-local storage that has space for two error numbers: private copies of the system 'errno' value and, on Windows, the system error code accessed by the GetLastError() and SetLastError() api functions. Foreign functions created with CDLL(..., use_errno=True), when called, swap the system 'errno' value with the private copy just before the actual function call, and swapped again immediately afterwards. The 'use_errno' parameter defaults to False, in this case 'ctypes_errno' is not touched. On Windows, foreign functions created with CDLL(..., use_last_error=True) or WinDLL(..., use_last_error=True) swap the system LastError value with the ctypes private copy. The values are also swapped immeditately before and after ctypes callback functions are called, if the callbacks are constructed using the new optional use_errno parameter set to True: CFUNCTYPE(..., use_errno=TRUE) or WINFUNCTYPE(..., use_errno=True). New ctypes functions are provided to access the ctypes private copies from Python: - ctypes.set_errno(value) and ctypes.set_last_error(value) store 'value' in the private copy and returns the previous value. - ctypes.get_errno() and ctypes.get_last_error() returns the current ctypes private copies value. ........
1 parent 311c16a
Tip revision: 9cac7b6117a61aac15c9d5ea3b85e7d3d5097a69 authored by Thomas Heller on 06 June 2008, 09:31:40 UTC
Merged revisions 63977 via svnmerge from
Merged revisions 63977 via svnmerge from
Tip revision: 9cac7b6
File | Mode | Size |
---|---|---|
Python-ast.h | -rw-r--r-- | 21.3 KB |
Python.h | -rw-r--r-- | 3.4 KB |
abstract.h | -rw-r--r-- | 41.1 KB |
asdl.h | -rw-r--r-- | 1.0 KB |
ast.h | -rw-r--r-- | 230 bytes |
bitset.h | -rw-r--r-- | 792 bytes |
boolobject.h | -rw-r--r-- | 886 bytes |
bytearrayobject.h | -rw-r--r-- | 1.8 KB |
bytes_methods.h | -rw-r--r-- | 3.2 KB |
bytesobject.h | -rw-r--r-- | 3.8 KB |
cStringIO.h | -rw-r--r-- | 2.0 KB |
cellobject.h | -rw-r--r-- | 651 bytes |
ceval.h | -rw-r--r-- | 5.1 KB |
classobject.h | -rw-r--r-- | 1.6 KB |
cobject.h | -rw-r--r-- | 1.7 KB |
code.h | -rw-r--r-- | 3.3 KB |
codecs.h | -rw-r--r-- | 4.9 KB |
compile.h | -rw-r--r-- | 1.1 KB |
complexobject.h | -rw-r--r-- | 1.5 KB |
datetime.h | -rw-r--r-- | 8.1 KB |
descrobject.h | -rw-r--r-- | 2.3 KB |
dictobject.h | -rw-r--r-- | 6.3 KB |
enumobject.h | -rw-r--r-- | 253 bytes |
errcode.h | -rw-r--r-- | 1.4 KB |
eval.h | -rw-r--r-- | 575 bytes |
fileobject.h | -rw-r--r-- | 1.1 KB |
floatobject.h | -rw-r--r-- | 4.3 KB |
frameobject.h | -rw-r--r-- | 2.8 KB |
funcobject.h | -rw-r--r-- | 3.5 KB |
genobject.h | -rw-r--r-- | 891 bytes |
graminit.h | -rw-r--r-- | 1.8 KB |
grammar.h | -rw-r--r-- | 2.0 KB |
import.h | -rw-r--r-- | 2.0 KB |
intobject.h | -rw-r--r-- | 936 bytes |
intrcheck.h | -rw-r--r-- | 274 bytes |
iterobject.h | -rw-r--r-- | 567 bytes |
listobject.h | -rw-r--r-- | 2.6 KB |
longintrepr.h | -rw-r--r-- | 2.1 KB |
longobject.h | -rw-r--r-- | 5.9 KB |
marshal.h | -rw-r--r-- | 713 bytes |
memoryobject.h | -rw-r--r-- | 2.2 KB |
metagrammar.h | -rw-r--r-- | 253 bytes |
methodobject.h | -rw-r--r-- | 3.2 KB |
modsupport.h | -rw-r--r-- | 4.9 KB |
moduleobject.h | -rw-r--r-- | 621 bytes |
node.h | -rw-r--r-- | 890 bytes |
object.h | -rw-r--r-- | 31.4 KB |
objimpl.h | -rw-r--r-- | 12.0 KB |
opcode.h | -rw-r--r-- | 4.2 KB |
osdefs.h | -rw-r--r-- | 869 bytes |
parsetok.h | -rw-r--r-- | 1.8 KB |
patchlevel.h | -rw-r--r-- | 1.2 KB |
pgen.h | -rw-r--r-- | 253 bytes |
pgenheaders.h | -rw-r--r-- | 1.1 KB |
py_curses.h | -rw-r--r-- | 4.1 KB |
pyarena.h | -rw-r--r-- | 2.6 KB |
pydebug.h | -rw-r--r-- | 918 bytes |
pyerrors.h | -rw-r--r-- | 11.1 KB |
pyexpat.h | -rw-r--r-- | 1.9 KB |
pyfpe.h | -rw-r--r-- | 8.3 KB |
pygetopt.h | -rw-r--r-- | 315 bytes |
pymath.h | -rw-r--r-- | 5.5 KB |
pymem.h | -rw-r--r-- | 3.7 KB |
pyport.h | -rw-r--r-- | 19.1 KB |
pystate.h | -rw-r--r-- | 6.3 KB |
pystrcmp.h | -rw-r--r-- | 436 bytes |
pystrtod.h | -rw-r--r-- | 359 bytes |
pythonrun.h | -rw-r--r-- | 6.5 KB |
pythread.h | -rw-r--r-- | 1.3 KB |
rangeobject.h | -rw-r--r-- | 629 bytes |
setobject.h | -rw-r--r-- | 2.9 KB |
sliceobject.h | -rw-r--r-- | 1.3 KB |
structmember.h | -rw-r--r-- | 2.3 KB |
structseq.h | -rw-r--r-- | 949 bytes |
symtable.h | -rw-r--r-- | 4.1 KB |
sysmodule.h | -rw-r--r-- | 846 bytes |
timefuncs.h | -rw-r--r-- | 442 bytes |
token.h | -rw-r--r-- | 1.7 KB |
traceback.h | -rw-r--r-- | 691 bytes |
tupleobject.h | -rw-r--r-- | 2.1 KB |
ucnhash.h | -rw-r--r-- | 861 bytes |
unicodeobject.h | -rw-r--r-- | 53.2 KB |
warnings.h | -rw-r--r-- | 507 bytes |
weakrefobject.h | -rw-r--r-- | 2.4 KB |
Computing file changes ...