diff Python/pythonrun.c @ 35417:e48fcd4c358d legacy-trunk

Forward UnicodeDecodeError into SyntaxError for source encoding errors. Will backport to 2.4.
author Martin v. Löwis <martin@v.loewis.de>
date Wed, 24 Aug 2005 08:39:24 +0000
parents 26bf6c27e9ce
children b8e571e6de2e
line wrap: on
line diff
--- a/Python/pythonrun.c	Wed Aug 24 07:38:12 2005 +0000
+++ b/Python/pythonrun.c	Wed Aug 24 08:39:24 2005 +0000
@@ -1474,18 +1474,20 @@
 		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: