From d35edda68245a7ab5f74c0f94ab13f6574df6a4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Wed, 24 Aug 2005 08:39:24 +0000 Subject: [PATCH] Forward UnicodeDecodeError into SyntaxError for source encoding errors. Will backport to 2.4. --- Misc/NEWS | 2 ++ Python/pythonrun.c | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index a65db9d8098..f5a2526e51b 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.5 alpha 1? Core and builtins ----------------- +- Forward UnicodeDecodeError into SyntaxError for source encoding errors. + - SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for exceptions that cause a function to exit. diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 9e53564ad86..68948fc34cd 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1474,18 +1474,20 @@ err_input(perrdetail *err) errtype = PyExc_IndentationError; msg = "too many levels of indentation"; break; - case E_DECODE: { /* XXX */ - PyThreadState* tstate = PyThreadState_GET(); - PyObject* value = tstate->curexc_value; + case E_DECODE: { + PyObject *type, *value, *tb; + PyErr_Fetch(&type, &value, &tb); if (value != NULL) { - u = PyObject_Repr(value); + u = PyObject_Str(value); if (u != NULL) { msg = PyString_AsString(u); - break; } } if (msg == NULL) msg = "unknown decode error"; + Py_DECREF(type); + Py_DECREF(value); + Py_DECREF(tb); break; } case E_LINECONT: