From: Ezio Melotti Date: Fri, 15 Apr 2011 13:50:41 +0000 (+0300) Subject: #5057: Merge with 3.1. X-Git-Tag: v3.2.1b1~122 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=71e84a6e27da7bfa8351d03ba8e52eb0b5150fb2;p=python #5057: Merge with 3.1. --- 71e84a6e27da7bfa8351d03ba8e52eb0b5150fb2 diff --cc Lib/test/test_peepholer.py index b7d446fdd0,d1d5874bb7..53719d3a82 --- a/Lib/test/test_peepholer.py +++ b/Lib/test/test_peepholer.py @@@ -193,8 -144,26 +193,26 @@@ class TestTranforms(unittest.TestCase) # Verify that large sequences do not result from folding asm = dis_single('a="x"*1000') - self.assertTrue('(1000)' in asm) + self.assertIn('(1000)', asm) + def test_binary_subscr_on_unicode(self): + # valid code get optimized + asm = dis_single('"foo"[0]') + self.assertIn("('f')", asm) + self.assertNotIn('BINARY_SUBSCR', asm) + asm = dis_single('"\u0061\uffff"[1]') + self.assertIn("('\\uffff')", asm) + self.assertNotIn('BINARY_SUBSCR', asm) + + # invalid code doesn't get optimized + # out of range + asm = dis_single('"fuu"[10]') + self.assertIn('BINARY_SUBSCR', asm) + # non-BMP char (see #5057) + asm = dis_single('"\U00012345"[0]') + self.assertIn('BINARY_SUBSCR', asm) + + def test_folding_of_unaryops_on_constants(self): for line, elem in ( ('-0.5', '(-0.5)'), # unary negative diff --cc Misc/NEWS index 3648498112,7ea8850328..2c3f86de00 --- a/Misc/NEWS +++ b/Misc/NEWS @@@ -10,9 -10,10 +10,13 @@@ What's New in Python 3.2.1 Core and Builtins ----------------- + - Issue #5057: fix a bug in the peepholer that led to non-portable pyc files + between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP + chars (e.g. "\U00012345"[0]). + +- Issue #11845: Fix typo in rangeobject.c that caused a crash in + compute_slice_indices. Patch by Daniel Urban. + - Issue #11650: PyOS_StdioReadline() retries fgets() if it was interrupted (EINTR), for example if the program is stopped with CTRL+z on Mac OS X. Patch written by Charles-Francois Natali.