Staging
v0.5.1
v0.5.1
https://github.com/python/cpython
Revision fbb9c0bf3c029caf02e531dac6df80b88f01b0a0 authored by Thomas Heller on 06 June 2008, 08:33:46 UTC, committed by Thomas Heller on 06 June 2008, 08:33:46 UTC
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 d77554f
Tip revision: fbb9c0bf3c029caf02e531dac6df80b88f01b0a0 authored by Thomas Heller on 06 June 2008, 08:33:46 UTC
Issue #1798: Add ctypes calling convention that allows safe access of errno.
Issue #1798: Add ctypes calling convention that allows safe access of errno.
Tip revision: fbb9c0b
File | Mode | Size |
---|---|---|
Python-ast.h | -rw-r--r-- | 19.6 KB |
Python.h | -rw-r--r-- | 4.3 KB |
abstract.h | -rw-r--r-- | 42.5 KB |
asdl.h | -rw-r--r-- | 1.1 KB |
ast.h | -rw-r--r-- | 230 bytes |
bitset.h | -rw-r--r-- | 792 bytes |
boolobject.h | -rw-r--r-- | 912 bytes |
bufferobject.h | -rw-r--r-- | 922 bytes |
bytearrayobject.h | -rw-r--r-- | 1.8 KB |
bytes_methods.h | -rw-r--r-- | 3.2 KB |
bytesobject.h | -rw-r--r-- | 7.0 KB |
cStringIO.h | -rw-r--r-- | 2.0 KB |
cellobject.h | -rw-r--r-- | 651 bytes |
ceval.h | -rw-r--r-- | 4.8 KB |
classobject.h | -rw-r--r-- | 2.9 KB |
cobject.h | -rw-r--r-- | 1.7 KB |
code.h | -rw-r--r-- | 3.4 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.1 KB |
dictobject.h | -rw-r--r-- | 5.6 KB |
enumobject.h | -rw-r--r-- | 253 bytes |
errcode.h | -rw-r--r-- | 1.3 KB |
eval.h | -rw-r--r-- | 557 bytes |
fileobject.h | -rw-r--r-- | 2.6 KB |
floatobject.h | -rw-r--r-- | 5.0 KB |
frameobject.h | -rw-r--r-- | 2.9 KB |
funcobject.h | -rw-r--r-- | 2.9 KB |
genobject.h | -rw-r--r-- | 891 bytes |
graminit.h | -rw-r--r-- | 1.9 KB |
grammar.h | -rw-r--r-- | 2.0 KB |
import.h | -rw-r--r-- | 2.0 KB |
intobject.h | -rw-r--r-- | 2.7 KB |
intrcheck.h | -rw-r--r-- | 274 bytes |
iterobject.h | -rw-r--r-- | 522 bytes |
listobject.h | -rw-r--r-- | 2.5 KB |
longintrepr.h | -rw-r--r-- | 2.3 KB |
longobject.h | -rw-r--r-- | 5.5 KB |
marshal.h | -rw-r--r-- | 713 bytes |
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-- | 609 bytes |
node.h | -rw-r--r-- | 890 bytes |
object.h | -rw-r--r-- | 35.0 KB |
objimpl.h | -rw-r--r-- | 12.1 KB |
opcode.h | -rw-r--r-- | 4.2 KB |
osdefs.h | -rw-r--r-- | 942 bytes |
parsetok.h | -rw-r--r-- | 1.7 KB |
patchlevel.h | -rw-r--r-- | 1.4 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-- | 1.2 KB |
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-- | 306 bytes |
pymacconfig.h | -rw-r--r-- | 1.5 KB |
pymactoolbox.h | -rw-r--r-- | 7.8 KB |
pymath.h | -rw-r--r-- | 5.5 KB |
pymem.h | -rw-r--r-- | 3.7 KB |
pyport.h | -rw-r--r-- | 21.7 KB |
pystate.h | -rw-r--r-- | 6.1 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-- | 646 bytes |
setobject.h | -rw-r--r-- | 2.9 KB |
sliceobject.h | -rw-r--r-- | 1.3 KB |
stringobject.h | -rw-r--r-- | 1.6 KB |
structmember.h | -rw-r--r-- | 2.6 KB |
structseq.h | -rw-r--r-- | 862 bytes |
symtable.h | -rw-r--r-- | 3.8 KB |
sysmodule.h | -rw-r--r-- | 863 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-- | 48.7 KB |
warnings.h | -rw-r--r-- | 635 bytes |
weakrefobject.h | -rw-r--r-- | 2.4 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...