[Python-checkins] r69113 - in python/trunk: Lib/test/test_tcl.py Modules/_tkinter.c

benjamin.peterson python-checkins at python.org
Fri Jan 30 03:24:40 CET 2009


Author: benjamin.peterson
Date: Fri Jan 30 03:24:39 2009
New Revision: 69113

Log:
make _tkinter._flatten check the result of PySequence_Size for errors #3880

Modified:
   python/trunk/Lib/test/test_tcl.py
   python/trunk/Modules/_tkinter.c

Modified: python/trunk/Lib/test/test_tcl.py
==============================================================================
--- python/trunk/Lib/test/test_tcl.py	(original)
+++ python/trunk/Lib/test/test_tcl.py	Fri Jan 30 03:24:39 2009
@@ -2,10 +2,19 @@
 
 import unittest
 import os
+import _tkinter
 from test import test_support
 from Tkinter import Tcl
 from _tkinter import TclError
 
+
+class TkinterTest(unittest.TestCase):
+
+    def testFlattenLen(self):
+        # flatten(<object with no length>)
+        self.assertRaises(TypeError, _tkinter._flatten, True)
+
+
 class TclTest(unittest.TestCase):
 
     def setUp(self):
@@ -151,7 +160,7 @@
                 os.environ['DISPLAY'] = old_display
 
 def test_main():
-    test_support.run_unittest(TclTest)
+    test_support.run_unittest(TclTest, TkinterTest)
 
 if __name__ == "__main__":
     test_main()

Modified: python/trunk/Modules/_tkinter.c
==============================================================================
--- python/trunk/Modules/_tkinter.c	(original)
+++ python/trunk/Modules/_tkinter.c	Fri Jan 30 03:24:39 2009
@@ -2908,7 +2908,9 @@
 		return NULL;
 
 	context.maxsize = PySequence_Size(item);
-	if (context.maxsize <= 0)
+	if (context.maxsize < 0)
+		return NULL;
+	if (context.maxsize == 0)
 		return PyTuple_New(0);
 	
 	context.tuple = PyTuple_New(context.maxsize);


More information about the Python-checkins mailing list