From 6f8281865292ff1cec78331cb881fa311c4f6f92 Mon Sep 17 00:00:00 2001 From: Alexandre Vassalotti Date: Tue, 21 Jul 2009 02:51:58 +0000 Subject: Merged revisions 73683,73786 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r73683 | georg.brandl | 2009-06-29 10:44:49 -0400 (Mon, 29 Jun 2009) | 1 line Fix error handling in PyCode_Optimize, by Alexander Schremmer at EuroPython sprint. ........ r73786 | benjamin.peterson | 2009-07-02 18:56:16 -0400 (Thu, 02 Jul 2009) | 1 line condense with assertRaises ........ --- Lib/test/test_scope.py | 15 ++------------- Python/peephole.c | 15 +++++++++------ 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py index 84ceafa..ef56b88 100644 --- a/Lib/test/test_scope.py +++ b/Lib/test/test_scope.py @@ -272,19 +272,8 @@ def f(): inner() y = 1 - try: - errorInOuter() - except UnboundLocalError: - pass - else: - self.fail() - - try: - errorInInner() - except NameError: - pass - else: - self.fail() + self.assertRaises(UnboundLocalError, errorInOuter) + self.assertRaises(NameError, errorInInner) # test for bug #1501934: incorrect LOAD/STORE_GLOBAL generation exec(""" diff --git a/Python/peephole.c b/Python/peephole.c index 23735b0..9163091 100644 --- a/Python/peephole.c +++ b/Python/peephole.c @@ -330,7 +330,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, /* Bail out if an exception is set */ if (PyErr_Occurred()) - goto exitUnchanged; + goto exitError; /* Bypass optimization when the lineno table is too complex */ assert(PyBytes_Check(lineno_obj)); @@ -348,7 +348,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, /* Make a modifiable copy of the code string */ codestr = (unsigned char *)PyMem_Malloc(codelen); if (codestr == NULL) - goto exitUnchanged; + goto exitError; codestr = (unsigned char *)memcpy(codestr, PyBytes_AS_STRING(code), codelen); @@ -363,11 +363,11 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, /* Mapping to new jump targets after NOPs are removed */ addrmap = (int *)PyMem_Malloc(codelen * sizeof(int)); if (addrmap == NULL) - goto exitUnchanged; + goto exitError; blocks = markblocks(codestr, codelen); if (blocks == NULL) - goto exitUnchanged; + goto exitError; assert(PyList_Check(consts)); for (i=0 ; i