From 1966f1c98f32c482b16f1a9c1a36fc8e0628486b Mon Sep 17 00:00:00 2001 From: Collin Winter Date: Sat, 1 Sep 2007 20:26:44 +0000 Subject: Fix refleaks exposed by test_raise. --- Python/ceval.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Python/ceval.c') diff --git a/Python/ceval.c b/Python/ceval.c index 24d4dec277..fa08fe6840 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; } -- cgit v1.2.1