diff options
author | Benjamin Peterson <benjamin@python.org> | 2014-12-13 21:08:15 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2014-12-13 21:08:15 (GMT) |
commit | 7ced53cc636e6c6b63a8918b11f6f69fc64b0d33 (patch) | |
tree | 59691a25618c03e88724a813794dec2660479e1d | |
parent | 050ca6530d876b70ac60dca274280fe0911494dd (diff) | |
parent | 3cda0ed062892c46cbae43989ff59399e8042f58 (diff) | |
download | cpython-7ced53cc636e6c6b63a8918b11f6f69fc64b0d33.zip cpython-7ced53cc636e6c6b63a8918b11f6f69fc64b0d33.tar.gz cpython-7ced53cc636e6c6b63a8918b11f6f69fc64b0d33.tar.bz2 |
merge 3.4 (#23048)
-rw-r--r-- | Lib/test/test_dis.py | 7 | ||||
-rw-r--r-- | Lib/test/test_sys_settrace.py | 11 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Python/compile.c | 5 |
4 files changed, 19 insertions, 6 deletions
diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index ed05f52..4f30183 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -178,15 +178,16 @@ dis_compound_stmt_str = """\ 1 0 LOAD_CONST 0 (0) 3 STORE_NAME 0 (x) - 2 6 SETUP_LOOP 13 (to 22) + 2 6 SETUP_LOOP 14 (to 23) 3 >> 9 LOAD_NAME 0 (x) 12 LOAD_CONST 1 (1) 15 INPLACE_ADD 16 STORE_NAME 0 (x) 19 JUMP_ABSOLUTE 9 - >> 22 LOAD_CONST 2 (None) - 25 RETURN_VALUE + 22 POP_BLOCK + >> 23 LOAD_CONST 2 (None) + 26 RETURN_VALUE """ dis_traceback = """\ diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index f0b0b82..ae8f845 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -579,6 +579,15 @@ def jump_in_nested_finally(output): jump_in_nested_finally.jump = (4, 9) jump_in_nested_finally.output = [2, 9] +def jump_infinite_while_loop(output): + output.append(1) + while 1: + output.append(2) + output.append(3) + +jump_infinite_while_loop.jump = (3, 4) +jump_infinite_while_loop.output = [1, 3] + # The second set of 'jump' tests are for things that are not allowed: def no_jump_too_far_forwards(output): @@ -755,6 +764,8 @@ class JumpTestCase(unittest.TestCase): self.run_test(jump_to_same_line) def test_07_jump_in_nested_finally(self): self.run_test(jump_in_nested_finally) + def test_jump_infinite_while_loop(self): + self.run_test(jump_infinite_while_loop) def test_08_no_jump_too_far_forwards(self): self.run_test(no_jump_too_far_forwards) def test_09_no_jump_too_far_backwards(self): @@ -10,6 +10,8 @@ Release date: TBA Core and Builtins ----------------- +- Issue #23048: Fix jumping out of an infinite while loop in the pdb. + - Issue #20335: bytes constructor now raises TypeError when encoding or errors is specified with non-string argument. Based on patch by Renaud Blanch. diff --git a/Python/compile.c b/Python/compile.c index 8abe50f..97fe5c2 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -2029,10 +2029,9 @@ compiler_while(struct compiler *c, stmt_ty s) if there is no else clause ? */ - if (constant == -1) { + if (constant == -1) compiler_use_next_block(c, anchor); - ADDOP(c, POP_BLOCK); - } + ADDOP(c, POP_BLOCK); compiler_pop_fblock(c, LOOP, loop); if (orelse != NULL) /* what if orelse is just pass? */ VISIT_SEQ(c, stmt, s->v.While.orelse); |