summaryrefslogtreecommitdiffstats
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorArmin Rigo <arigo@tunes.org>2004-03-22 20:16:58 (GMT)
committerArmin Rigo <arigo@tunes.org>2004-03-22 20:16:58 (GMT)
commit5d2c68359bcd6c2dde37fe0780475422b7329641 (patch)
tree13ad66ac9889c8b6987f4ffc444af4a6961a99af /Python/pythonrun.c
parent1eb4bfc6579133c2d7a495141b1f754dfecf0fc6 (diff)
downloadcpython-5d2c68359bcd6c2dde37fe0780475422b7329641.zip
cpython-5d2c68359bcd6c2dde37fe0780475422b7329641.tar.gz
cpython-5d2c68359bcd6c2dde37fe0780475422b7329641.tar.bz2
Lost reference.
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c14
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)