Staging
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
History
Tip revision: 9cac7b6117a61aac15c9d5ea3b85e7d3d5097a69 authored by Thomas Heller on 06 June 2008, 09:31:40 UTC
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

back to top