diff options
| -rw-r--r-- | Lib/ctypes/test/test_structures.py | 8 | ||||
| -rw-r--r-- | Misc/NEWS | 2 | ||||
| -rw-r--r-- | Modules/_ctypes/_ctypes.c | 2 | 
3 files changed, 7 insertions, 5 deletions
diff --git a/Lib/ctypes/test/test_structures.py b/Lib/ctypes/test/test_structures.py index 3005e82..0c5a347 100644 --- a/Lib/ctypes/test/test_structures.py +++ b/Lib/ctypes/test/test_structures.py @@ -222,8 +222,8 @@ class StructureTestCase(unittest.TestCase):          self.assertRaises(TypeError, POINT, 2, 3, x=4)          self.assertRaises(TypeError, POINT, 2, 3, y=4) -        # Should this raise TypeError instead? -        self.assertRaises(ValueError, POINT, 2, 3, 4) +        # too many initializers +        self.assertRaises(TypeError, POINT, 2, 3, 4)      def test_keyword_initializers(self):          class POINT(Structure): @@ -320,9 +320,9 @@ class StructureTestCase(unittest.TestCase):          self.failUnlessEqual(cls, RuntimeError)          if issubclass(Exception, object):              self.failUnlessEqual(msg, -                                 "(Phone) <type 'exceptions.ValueError'>: too many initializers") +                                 "(Phone) <type 'exceptions.TypeError'>: too many initializers")          else: -            self.failUnlessEqual(msg, "(Phone) exceptions.ValueError: too many initializers") +            self.failUnlessEqual(msg, "(Phone) exceptions.TypeError: too many initializers")      def get_except(self, func, *args): @@ -366,6 +366,8 @@ Library  - Issue #1831: ctypes now raises a TypeError if conflicting positional    and named arguments are passed to a Structure or Union initializer. +  When too many positional arguments are passed, also a TypeError is +  raised instead of a ValueError.  - Convert the internal ctypes array type cache to a WeakValueDict so    that array types do not live longer than needed. diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 8c66194..24d3c2f 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -3557,7 +3557,7 @@ Struct_init(PyObject *self, PyObject *args, PyObject *kwds)  		if (PyTuple_GET_SIZE(args) > PySequence_Length(fields)) {  			Py_DECREF(fields); -			PyErr_SetString(PyExc_ValueError, +			PyErr_SetString(PyExc_TypeError,  					"too many initializers");  			return -1;  		}  | 
