[Python-checkins] r51819 - in python/trunk: Lib/ctypes/test/test_bitfields.py Modules/_ctypes/stgdict.c
Thomas Heller
theller at python.net
Thu Sep 7 21:08:01 CEST 2006
Neal, I would like to backport this to release25-maint.
thomas.heller schrieb:
> Author: thomas.heller
> Date: Thu Sep 7 20:56:28 2006
> New Revision: 51819
>
> Modified:
> python/trunk/Lib/ctypes/test/test_bitfields.py
> python/trunk/Modules/_ctypes/stgdict.c
> Log:
> Anonymous structure fields that have a bit-width specified did not work,
> and they gave a strange error message from PyArg_ParseTuple:
> function takes exactly 2 arguments (3 given).
>
> With tests.
>
> Modified: python/trunk/Lib/ctypes/test/test_bitfields.py
> ==============================================================================
> --- python/trunk/Lib/ctypes/test/test_bitfields.py (original)
> +++ python/trunk/Lib/ctypes/test/test_bitfields.py Thu Sep 7 20:56:28 2006
> @@ -215,5 +215,14 @@
> ("b", c_ubyte, 4)]
> self.failUnlessEqual(sizeof(X), sizeof(c_byte))
>
> + def test_anon_bitfields(self):
> + # anonymous bit-fields gave a strange error message
> + class X(Structure):
> + _fields_ = [("a", c_byte, 4),
> + ("b", c_ubyte, 4)]
> + class Y(Structure):
> + _anonymous_ = ["_"]
> + _fields_ = [("_", X)]
> +
> if __name__ == "__main__":
> unittest.main()
>
> Modified: python/trunk/Modules/_ctypes/stgdict.c
> ==============================================================================
> --- python/trunk/Modules/_ctypes/stgdict.c (original)
> +++ python/trunk/Modules/_ctypes/stgdict.c Thu Sep 7 20:56:28 2006
> @@ -177,11 +177,11 @@
>
> for (i = 0; i < PySequence_Fast_GET_SIZE(fieldlist); ++i) {
> PyObject *pair = PySequence_Fast_GET_ITEM(fieldlist, i); /* borrowed */
> - PyObject *fname, *ftype;
> + PyObject *fname, *ftype, *bits;
> CFieldObject *fdescr;
> CFieldObject *new_descr;
> /* Convert to PyArg_UnpackTuple... */
> - if (!PyArg_ParseTuple(pair, "OO", &fname, &ftype)) {
> + if (!PyArg_ParseTuple(pair, "OO|O", &fname, &ftype, &bits)) {
> Py_DECREF(fieldlist);
> return -1;
> }
More information about the Python-checkins
mailing list