diff options
| author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-02-21 21:05:50 +0000 |
|---|---|---|
| committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-02-21 21:05:50 +0000 |
| commit | ed4c71112a07a2adad9cb26b9b2d790725443b1f (patch) | |
| tree | 47aa9e30f13c350eea5f9b51165d99e67b649bea | |
| parent | 441cc01e0f172599d544a18a3fe8ad08a9dd633a (diff) | |
| download | cpython-git-ed4c71112a07a2adad9cb26b9b2d790725443b1f.tar.gz | |
Remove filename variable from ceval.c
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.
| -rw-r--r-- | Misc/NEWS | 7 | ||||
| -rw-r--r-- | Python/ceval.c | 16 |
2 files changed, 6 insertions, 17 deletions
@@ -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 ------- diff --git a/Python/ceval.c b/Python/ceval.c index f6d4b0b84b..c10a2ff594 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -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; |
