summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorCollin Winter <collinw@gmail.com>2007-09-01 20:26:44 (GMT)
committerCollin Winter <collinw@gmail.com>2007-09-01 20:26:44 (GMT)
commit1966f1c98f32c482b16f1a9c1a36fc8e0628486b (patch)
tree32712f50c111e5cc456278f3ce868f36ee54f57d /Python
parent1963ad3126806672cf49ded8f524f105dcc72d33 (diff)
downloadcpython-1966f1c98f32c482b16f1a9c1a36fc8e0628486b.zip
cpython-1966f1c98f32c482b16f1a9c1a36fc8e0628486b.tar.gz
cpython-1966f1c98f32c482b16f1a9c1a36fc8e0628486b.tar.bz2
Fix refleaks exposed by test_raise.
Diffstat (limited to 'Python')
-rw-r--r--Python/ceval.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 24d4dec..fa08fe6 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2967,7 +2967,6 @@ do_raise(PyObject *exc, PyObject *cause)
/* Not something you can raise. You get an exception
anyway, just not what you specified :-) */
Py_DECREF(exc);
- Py_XDECREF(cause);
PyErr_SetString(PyExc_TypeError,
"exceptions must derive from BaseException");
goto raise_error;
@@ -2980,12 +2979,12 @@ do_raise(PyObject *exc, PyObject *cause)
fixed_cause = PyObject_CallObject(cause, NULL);
if (fixed_cause == NULL)
goto raise_error;
+ Py_DECREF(cause);
}
else if (PyExceptionInstance_Check(cause)) {
fixed_cause = cause;
}
else {
- Py_DECREF(cause);
PyErr_SetString(PyExc_TypeError,
"exception causes must derive from BaseException");
goto raise_error;
@@ -3000,6 +2999,7 @@ raise_error:
Py_XDECREF(value);
Py_XDECREF(type);
Py_XDECREF(tb);
+ Py_XDECREF(cause);
return WHY_EXCEPTION;
}