1. 05 Jun, 2008 6 commits
  2. 04 Jun, 2008 6 commits
    • Alexandre Vassalotti's avatar
    • Thomas Heller's avatar
      Revert revisions 63943 and 63942 (Issue #1798: Add ctypes calling · d5bb9215
      Thomas Heller authored
      convention that allows safe access to errno)
      
      This code does not yet work on OS X (__thread storage specifier not
      available), so i needs a configure check plus a more portable
      solution.
      d5bb9215
    • Thomas Heller's avatar
      Fix ctypes.set_errno for gcc. · 8f22b88e
      Thomas Heller authored
      8f22b88e
    • Thomas Heller's avatar
      Issue #1798: Add ctypes calling convention that allows safe access to · e70c3378
      Thomas Heller authored
      errno (and LastError, on Windows).
      
      ctypes maintains a module-global, but thread-local, variable that
      contains an error number; called 'ctypes_errno' for this discussion.
      This variable is a private copy of the systems 'errno' value; the copy
      is swapped with the 'errno' variable on several occasions.
      
      Foreign functions created with CDLL(..., use_errno=True), when called,
      swap the values 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.
      
      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).
      
      Two new ctypes functions are provided to access the 'ctypes_errno'
      value from Python:
      
      - ctypes.set_errno(value) sets ctypes_errno to 'value', the previous
        ctypes_errno value is returned.
      
      - ctypes.get_errno() returns the current ctypes_errno value.
      
      ---
      
      On Windows, the same scheme is implemented for the error value which
      is managed by the GetLastError() and SetLastError() windows api calls.
      
      The ctypes functions are 'ctypes.set_last_error(value)' and
      'ctypes.get_last_error()', the CDLL and WinDLL optional parameter is
      named 'use_last_error', defaults to False.
      
      ---
      
      On Windows, TlsSetValue and TlsGetValue calls are used to provide
      thread local storage for the variables; ctypes compiled with __GNUC__
      uses __thread variables.
      e70c3378
    • Georg Brandl's avatar
      a2b34b87
    • Martin v. Löwis's avatar
      8718459f
  3. 03 Jun, 2008 2 commits
  4. 02 Jun, 2008 5 commits
  5. 01 Jun, 2008 14 commits
  6. 31 May, 2008 6 commits
  7. 30 May, 2008 1 commit