Thomas Heller
d5bb9215c9
Revert revisions 63943 and 63942 (Issue #1798 : Add ctypes calling
...
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.
2008-06-04 20:22:05 +00:00
Thomas Heller
e70c3378c0
Issue #1798 : Add ctypes calling convention that allows safe access to
...
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.
2008-06-04 18:59:03 +00:00
Thomas Heller
261b136321
Fix the -x flag so that is does work.
2008-06-02 20:07:46 +00:00
Thomas Heller
9287acf83d
ctypes NULL function pointers have a boolean False value now.
2008-05-29 19:42:34 +00:00
Thomas Heller
6c78f553ae
Oops, get_tests may be called with 3 arguments.
2008-05-21 19:47:44 +00:00
Thomas Heller
7d9e721586
The -x <test1[,test2...]> flag allows to exclude tests.
2008-05-21 18:47:02 +00:00
Thomas Heller
ee130b72f8
Very simple test for ctypes.util.find_library on Windows.
2008-05-16 20:19:07 +00:00
Thomas Heller
95ba13fa85
Issue 1793: Add ctypes.util.find_msvcrt() function (on Windows).
2008-05-16 20:06:31 +00:00
Thomas Heller
6ad5fbb7ea
Add from_buffer and from_buffer_copy class methods to ctypes types.
2008-04-25 15:44:16 +00:00
Thomas Heller
046e6a43ff
Issue #2616 : Implement ctypes.pointer() and ctypes.POINTER() in C for
...
better performance.
2008-04-14 16:10:07 +00:00
Thomas Heller
8e8ba151dd
Issue #2543 : Make ctypes compatible (again) with Python 2.3, 2.4, and 2.5.
2008-04-04 08:35:44 +00:00
Thomas Heller
f3c0559b5e
Issue 1872: Changed the struct module typecode from 't' to '?', for
...
compatibility with PEP3118.
2008-03-05 15:34:29 +00:00
Christian Heimes
c5f05e45cf
Patch #2167 from calvin: Remove unused imports
2008-02-23 17:40:11 +00:00
Thomas Heller
8982cf5484
Replace 'has_key()' with 'in'.
...
Replace 'raise Error, stuff' with 'raise Error(stuff)'.
2008-02-21 18:52:20 +00:00
Thomas Heller
4516451aec
Make the test somewhat clearer (I hope).
2008-02-13 20:36:51 +00:00
Thomas Heller
a06a1a88ee
Add pickle support to ctypes types.
2008-02-13 20:21:53 +00:00
Thomas Heller
99120c4f7e
Revert rev. 59925, it breaks comtypes (I need to further examine this).
2008-01-28 08:44:13 +00:00
Thomas Heller
5ca924038d
Invert the checks in get_[u]long and get_[u]longlong. The intent was
...
to not accept float types; the result was that integer-like objects
were not accepted.
Ported from release25-maint.
2008-01-24 19:15:02 +00:00
Thomas Heller
0f75f9847a
Use 'g' instead of 'D' as the ctypes typecode for c_longdouble, for
...
compliance with PEP 3118.
2008-01-16 20:34:37 +00:00
Thomas Heller
415c1e36a9
Raise a TypeError instead of a ValueError when too many initializers
...
are used in a Structure or Union constructor.
2008-01-16 19:45:51 +00:00
Thomas Heller
02ec289f3e
Raise a TypeError if conflicting positional and named arguments are
...
passed to a Structure or Union constructor.
2008-01-16 19:37:33 +00:00
Thomas Heller
902d30752f
Convert the internal ctypes array type cache to a WeakValueDict so
...
that array types do not live longer than needed.
2008-01-16 19:16:27 +00:00
Thomas Heller
c682614df0
Raise an error instead of crashing with a segfault when a NULL
...
function pointer is called.
Will backport to release25-maint.
2008-01-11 19:34:06 +00:00
Thomas Heller
153038efa4
Issue #1642 : Fix segfault in ctypes when trying to delete attributes.
2007-12-18 19:00:34 +00:00
Thomas Heller
03fd077482
Enable the full ctypes c_longdouble tests again.
2007-11-02 19:11:23 +00:00
Thomas Heller
e7becc5007
Added unittest for calling a function with paramflags (backport from py3k branch).
2007-10-24 19:50:45 +00:00
Thomas Heller
7fee6dd2a3
On OS X, use os.uname() instead of gestalt.sysv(...) to get the
...
operating system version. This allows to use ctypes when Python
was configured with --disable-toolbox-glue.
2007-10-11 19:51:32 +00:00
Thomas Heller
a7f49f733b
ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris.
...
Fixes issue #1777530 ; will backport to release25-maint.
2007-09-14 19:40:35 +00:00
Thomas Heller
0b7120258a
Disable some tests that fail on the 'ppc Debian unstable' buildbot to
...
find out if they cause the segfault on the 'alpha Debian' machine.
2007-09-11 19:17:48 +00:00
Thomas Heller
2e638c3a8a
Backport from py3k branch:
...
Add a workaround for a strange bug on win64, when _ctypes is compiled
with the SDK compiler. This should fix the failing
Lib\ctypes\test\test_as_parameter.py test.
2007-09-07 09:33:24 +00:00
Thomas Heller
2825b2ea44
Add a 'c_longdouble' type to the ctypes module.
2007-09-07 06:32:17 +00:00
Thomas Wouters
dcb3c382ac
Somewhat-preliminary slice-object and extended slicing support for ctypes.
...
The exact behaviour of omitted and negative indices for the Pointer type may
need a closer look (especially as it's subtly different from simple slices)
but there's time yet before 2.6, and not enough before 3.0a1 :-)
2007-08-30 21:01:17 +00:00
Neal Norwitz
60b52bd4ed
Fix typo in docstring (missing c in reacquire)
2007-08-26 01:08:16 +00:00
Thomas Heller
fa704c6ade
Fix for SF# 1701409: segfault in c_char_p of ctypes. The repr output
...
of c_char_p and c_wchar_p has changed as a sideeffect.
2007-07-13 17:12:23 +00:00
Thomas Heller
ad0cfe3dd7
Do not try to load the GLUT library in the ctypes tests. This test
...
adds little value, but has a large problem on OS X, as explained in
SF# 1581906.
2007-07-13 16:50:43 +00:00
Thomas Heller
1fd1cc5be2
Add tests for _ctypes.COMError.
2007-07-13 14:18:06 +00:00
Thomas Heller
1b9e041812
Make this test work with older Python releases where struct has no 't' format character.
2007-06-08 16:10:27 +00:00
Thomas Heller
b4eec28e33
Correct the name of a field in the WIN32_FIND_DATAA and WIN32_FIND_DATAW structures.
...
Closes bug #1726026 .
2007-05-30 07:01:25 +00:00
Thomas Heller
2ebc4d8054
Oops, these tests do not run on Windows CE.
2007-05-04 19:56:32 +00:00
Thomas Heller
1ad576c267
Do not truncate 64-bit pointers to 32-bit integers.
...
Fixes SF #1703286 , will backport to release25-maint.
2007-05-04 19:54:22 +00:00
Thomas Heller
0455214f1c
Fix some ctypes test crashes, when running with a debug Python
...
version on win64 by using proper argtypes and restype function
attributes.
2007-05-04 07:14:39 +00:00
Neal Norwitz
0d4c06e06e
Whitespace normalization. Ugh, we really need to do this more often.
...
You might want to review this change as it's my first time. Be gentle. :-)
2007-04-25 06:30:05 +00:00
Thomas Heller
5dc4fe09b7
Patch #1649190 : Adding support for _Bool to ctypes as c_bool, by David Remahl.
2007-03-13 20:42:52 +00:00
Thomas Heller
2456a3c02a
Bug #1651235 : When a tuple was passed to a ctypes function call,
...
Python would crash instead of raising an error.
The crash was caused by a section of code that should have been
removed long ago, at that time ctypes had other ways to pass
parameters to function calls.
2007-03-09 20:39:22 +00:00
Thomas Heller
c2f7725c86
Fix bug #1646630 : ctypes.string_at(buf, 0) and ctypes.wstring_at(buf, 0)
...
returned string up to the first NUL character.
2007-03-09 19:21:28 +00:00
Thomas Heller
d059e7b423
patch #1610795 : BSD version of ctypes.util.find_library, by Martin
...
Kammerhofer.
release25-maint backport candidate, but the release manager has to
decide.
2007-01-12 20:17:34 +00:00
Thomas Heller
572104ff5c
Avoid warnings in the test suite because ctypes.wintypes cannot be
...
imported on non-windows systems.
2007-01-12 20:08:19 +00:00
Thomas Heller
f5b5183a19
Correct the comments: the code is right.
2007-01-11 21:23:12 +00:00
Thomas Heller
8138c26a83
Fixes for 64-bit Windows: In ctypes.wintypes, correct the definitions
...
of HANDLE, WPARAM, LPARAM data types. Make parameterless foreign
function calls work.
2007-01-11 21:18:56 +00:00
Thomas Heller
fb9d78733e
Change the ctypes version number to "1.1.0".
2007-01-10 20:12:13 +00:00