[Python-checkins] r60004 - in python/trunk: Lib/ctypes/test/test_structures.py Misc/NEWS Modules/_ctypes/_ctypes.c

thomas.heller python-checkins at python.org
Wed Jan 16 20:45:51 CET 2008


Author: thomas.heller
Date: Wed Jan 16 20:45:51 2008
New Revision: 60004
Modified:
 python/trunk/Lib/ctypes/test/test_structures.py
 python/trunk/Misc/NEWS
 python/trunk/Modules/_ctypes/_ctypes.c
Log:
Raise a TypeError instead of a ValueError when too many initializers
are used in a Structure or Union constructor.
Modified: python/trunk/Lib/ctypes/test/test_structures.py
==============================================================================
--- python/trunk/Lib/ctypes/test/test_structures.py	(original)
+++ python/trunk/Lib/ctypes/test/test_structures.py	Wed Jan 16 20:45:51 2008
@@ -222,8 +222,8 @@
 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 @@
 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):
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Wed Jan 16 20:45:51 2008
@@ -366,6 +366,8 @@
 
 - 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.
Modified: python/trunk/Modules/_ctypes/_ctypes.c
==============================================================================
--- python/trunk/Modules/_ctypes/_ctypes.c	(original)
+++ python/trunk/Modules/_ctypes/_ctypes.c	Wed Jan 16 20:45:51 2008
@@ -3557,7 +3557,7 @@
 
 		if (PyTuple_GET_SIZE(args) > PySequence_Length(fields)) {
 			Py_DECREF(fields);
-			PyErr_SetString(PyExc_ValueError,
+			PyErr_SetString(PyExc_TypeError,
 					"too many initializers");
 			return -1;
 		}


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /