Mercurial > cpython-lru_cache-weakref
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; |
