cpython/Lib/ctypes
Tim Peters 319c47fcdb Try to repair what may be the last new test failure on the
"x86 OpenBSD trunk" buildbot due to changing Python so that
Python-exposed addresses are always non-negative.

test_int_pointer_arg():  This line failed now whenever the
box happened to assign an address to `ci` "with the sign
bit set":

    self.failUnlessEqual(addressof(ci), func(byref(ci)))

The problem is that the ctypes addressof() inherited "all
addresses are non-negative now" from changes to
PyLong_FromVoidPtr(), but byref() did not inherit that
change and can still return a negative int.

I don't know whether, or what, the ctypes implementation wants
to do about that (possibly nothing), but in the meantime
the test fails frequently.

So, introduced a Python positive_address() function in
the test module, that takes a purported machine address and,
if negative, converts it to a non-negative value "with the
same bits".  This should leave the test passing under all
versions of Python.

Belated thanks to Armin Rigo for teaching me the sick trick ;-)
for determining the # of bits in a machine pointer via abuse
of the struct module.
2006-04-11 02:59:48 +00:00
..
macholib Remove .cvsignore and set svn:ignore for *.pyc *.pyo. 2006-03-08 23:31:17 +00:00
test Try to repair what may be the last new test failure on the 2006-04-11 02:59:48 +00:00
__init__.py Expose RTLD_LOCAL and RTLD_GLOBAL always from the _ctypes extension module. 2006-04-06 15:23:16 +00:00
_endian.py Whitespace normalization. 2006-03-09 01:15:05 +00:00
_loader.py Expose RTLD_LOCAL and RTLD_GLOBAL always from the _ctypes extension module. 2006-04-06 15:23:16 +00:00
wintypes.py