diff options
author | Armin Rigo <arigo@tunes.org> | 2004-03-22 20:16:58 (GMT) |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2004-03-22 20:16:58 (GMT) |
commit | 5d2c68359bcd6c2dde37fe0780475422b7329641 (patch) | |
tree | 13ad66ac9889c8b6987f4ffc444af4a6961a99af /Python | |
parent | 1eb4bfc6579133c2d7a495141b1f754dfecf0fc6 (diff) | |
download | cpython-5d2c68359bcd6c2dde37fe0780475422b7329641.zip cpython-5d2c68359bcd6c2dde37fe0780475422b7329641.tar.gz cpython-5d2c68359bcd6c2dde37fe0780475422b7329641.tar.bz2 |
Lost reference.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/pythonrun.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 224b3c8..614e65d 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1086,8 +1086,8 @@ PyErr_PrintEx(int set_sys_last_vars) void PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) { int err = 0; - PyObject *v = value; PyObject *f = PySys_GetObject("stderr"); + Py_INCREF(value); if (f == NULL) fprintf(stderr, "lost sys.stderr\n"); else { @@ -1097,12 +1097,12 @@ void PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) if (tb && tb != Py_None) err = PyTraceBack_Print(tb, f); if (err == 0 && - PyObject_HasAttrString(v, "print_file_and_line")) + PyObject_HasAttrString(value, "print_file_and_line")) { PyObject *message; const char *filename, *text; int lineno, offset; - if (!parse_syntax_error(v, &message, &filename, + if (!parse_syntax_error(value, &message, &filename, &lineno, &offset, &text)) PyErr_Clear(); else { @@ -1118,7 +1118,8 @@ void PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) PyFile_WriteString("\n", f); if (text != NULL) print_error_text(f, offset, text); - v = message; + Py_DECREF(value); + value = message; /* Can't be bothered to check all those PyFile_WriteString() calls */ if (PyErr_Occurred()) @@ -1155,8 +1156,8 @@ void PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) else err = PyFile_WriteObject(exception, f, Py_PRINT_RAW); if (err == 0) { - if (v != NULL && v != Py_None) { - PyObject *s = PyObject_Str(v); + if (value != Py_None) { + PyObject *s = PyObject_Str(value); /* only print colon if the str() of the object is not the empty string */ @@ -1173,6 +1174,7 @@ void PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) if (err == 0) err = PyFile_WriteString("\n", f); } + Py_DECREF(value); /* If an error happened here, don't show it. XXX This is wrong, but too many callers rely on this behavior. */ if (err != 0) |