comparison 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
comparison
equal deleted inserted replaced
35415:ff2e66fc0a29 35417:e48fcd4c358d
1472 break; 1472 break;
1473 case E_TOODEEP: 1473 case E_TOODEEP:
1474 errtype = PyExc_IndentationError; 1474 errtype = PyExc_IndentationError;
1475 msg = "too many levels of indentation"; 1475 msg = "too many levels of indentation";
1476 break; 1476 break;
1477 case E_DECODE: { /* XXX */ 1477 case E_DECODE: {
1478 PyThreadState* tstate = PyThreadState_GET(); 1478 PyObject *type, *value, *tb;
1479 PyObject* value = tstate->curexc_value; 1479 PyErr_Fetch(&type, &value, &tb);
1480 if (value != NULL) { 1480 if (value != NULL) {
1481 u = PyObject_Repr(value); 1481 u = PyObject_Str(value);
1482 if (u != NULL) { 1482 if (u != NULL) {
1483 msg = PyString_AsString(u); 1483 msg = PyString_AsString(u);
1484 break;
1485 } 1484 }
1486 } 1485 }
1487 if (msg == NULL) 1486 if (msg == NULL)
1488 msg = "unknown decode error"; 1487 msg = "unknown decode error";
1488 Py_DECREF(type);
1489 Py_DECREF(value);
1490 Py_DECREF(tb);
1489 break; 1491 break;
1490 } 1492 }
1491 case E_LINECONT: 1493 case E_LINECONT:
1492 msg = "unexpected character after line continuation character"; 1494 msg = "unexpected character after line continuation character";
1493 break; 1495 break;