]> granicus.if.org Git - python/commitdiff
Remove filename variable from ceval.c
authorVictor Stinner <victor.stinner@haypocalc.com>
Mon, 21 Feb 2011 21:05:50 +0000 (21:05 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Mon, 21 Feb 2011 21:05:50 +0000 (21:05 +0000)
Issue #11168: Remove filename debug variable from PyEval_EvalFrameEx().
It encoded the Unicode filename to UTF-8, but the encoding fails on
undecodable filename (on surrogate characters) which raises an unexpected
UnicodeEncodeError on recursion limit.

Misc/NEWS
Python/ceval.c

index 64d4bbc447397da5c93ac0c9012a8719a11e219d..7b55d203a0123fff218d2cf0d71546922574b067 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,12 +10,17 @@ What's New in Python 3.3 Alpha 1?
 Core and Builtins
 -----------------
 
-- Check for NULL result in PyType_FromSpec.
+- Issue #11168: Remove filename debug variable from PyEval_EvalFrameEx().
+  It encoded the Unicode filename to UTF-8, but the encoding fails on
+  undecodable filename (on surrogate characters) which raises an unexpected
+  UnicodeEncodeError on recursion limit.
 
 - Issue #11187: Remove bootstrap code (use ASCII) of
   PyUnicode_AsEncodedString(), it was replaced by a better fallback (use the
   locale encoding) in PyUnicode_EncodeFSDefault().
 
+- Check for NULL result in PyType_FromSpec.
+
 Library
 -------
 
index f6d4b0b84ba12a9ba43c59a3524f417f63d93d99..c10a2ff594927aed035ac0e6e7da051d0caffe74 100644 (file)
@@ -811,10 +811,6 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
     unsigned char *first_instr;
     PyObject *names;
     PyObject *consts;
-#if defined(Py_DEBUG) || defined(LLTRACE)
-    /* Make it easier to find out where we are with a debugger */
-    char *filename;
-#endif
 
 /* Computed GOTOs, or
        the-optimization-commonly-but-improperly-known-as-"threaded code"
@@ -1227,18 +1223,6 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
 #ifdef LLTRACE
     lltrace = PyDict_GetItemString(f->f_globals, "__lltrace__") != NULL;
 #endif
-#if defined(Py_DEBUG) || defined(LLTRACE)
-    {
-        PyObject *error_type, *error_value, *error_traceback;
-        PyErr_Fetch(&error_type, &error_value, &error_traceback);
-        filename = _PyUnicode_AsString(co->co_filename);
-        if (filename == NULL && tstate->overflowed) {
-            /* maximum recursion depth exceeded */
-            goto exit_eval_frame;
-        }
-        PyErr_Restore(error_type, error_value, error_traceback);
-    }
-#endif
 
     why = WHY_NOT;
     err = 0;