[Python-checkins] r43115 - in python/trunk: Lib/ctypes/__init__.py Lib/ctypes/test/test_byteswap.py Lib/ctypes/test/test_cfuncs.py Lib/ctypes/test/test_loading.py Lib/ctypes/test/test_sizes.py Modules/_ctypes/_ctypes.c Modules/_ctypes/callproc.c

Neal Norwitz nnorwitz at gmail.com
Sat Mar 18 04:12:13 CET 2006


On 3/17/06, thomas.heller <python-checkins at python.org> wrote:
> Author: thomas.heller
> Date: Fri Mar 17 16:52:58 2006
> New Revision: 43115
>
> @@ -198,17 +199,20 @@
>              pass
>          self.assertRaises(TypeError, setattr, S, "_fields_", [("s", T)])
>
> -    # crashes on solaris with a core dump.
> -    def X_test_struct_fields(self):
> +    def test_struct_fields_2(self):
> +        # standard packing in struct uses no alignment.
> +        # So, we have to align using pad bytes.
> +        #
> +        # Unaligned accesses will crash Python (on those platforms that
> +        # don't allow it, like sparc solaris).

Note: this is really a bug in Python that should be fixed.


> Modified: python/trunk/Modules/_ctypes/_ctypes.c
> ==============================================================================
> --- python/trunk/Modules/_ctypes/_ctypes.c      (original)
> +++ python/trunk/Modules/_ctypes/_ctypes.c      Fri Mar 17 16:52:58 2006
> @@ -2529,9 +2556,14 @@
>  #ifdef MS_WIN32
>         address = FindAddress(handle, name, (PyObject *)type);
>         if (!address) {
> -               PyErr_Format(PyExc_AttributeError,
> -                            "function '%s' not found",
> -                            name);
> +               if ((size_t)name & ~0xFFFF)
> +                       PyErr_Format(PyExc_AttributeError,
> +                                    "function '%s' not found",
> +                                    name);
> +               else
> +                       PyErr_Format(PyExc_AttributeError,
> +                                    "function ordinal %d not found",
> +                                    name);

name can't be both a string and an integer.  That last error message
looks wrong.

n


More information about the Python-checkins mailing list