summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Borzenkov <snaury@gmail.com>2014-09-20 23:54:05 +0400
committerAlexey Borzenkov <snaury@gmail.com>2014-09-20 23:54:05 +0400
commitd23996a140defe3bf367d4f9179369980cc68843 (patch)
treeb10a58dac5b7063a60f56865a16f221429918e21
parentda73bfd11cdc370162bedf9cb2793b93c3bf08e0 (diff)
downloadgreenlet-d23996a140defe3bf367d4f9179369980cc68843.tar.gz
Fix incorrect uses of PyGreenlet_GetCurrent() in tests
-rw-r--r--tests/_test_extension.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/tests/_test_extension.c b/tests/_test_extension.c
index c9b8263..ec8b70c 100644
--- a/tests/_test_extension.c
+++ b/tests/_test_extension.c
@@ -67,14 +67,17 @@ test_getcurrent(PyObject *self)
PyErr_SetString(
PyExc_AssertionError,
"getcurrent() returned an invalid greenlet");
+ Py_XDECREF(g);
return NULL;
}
+ Py_DECREF(g);
Py_RETURN_NONE;
}
static PyObject *
test_setparent(PyObject *self, PyObject *arg)
{
+ PyGreenlet *current;
PyGreenlet *greenlet = NULL;
if (arg == NULL || !PyGreenlet_Check(arg))
@@ -82,9 +85,18 @@ test_setparent(PyObject *self, PyObject *arg)
PyErr_BadArgument();
return NULL;
}
+ if ((current = PyGreenlet_GetCurrent()) == NULL) {
+ return NULL;
+ }
greenlet = (PyGreenlet *) arg;
- PyGreenlet_SetParent(greenlet, PyGreenlet_GetCurrent());
- PyGreenlet_Switch(greenlet, NULL, NULL);
+ if (PyGreenlet_SetParent(greenlet, current)) {
+ Py_DECREF(current);
+ return NULL;
+ }
+ Py_DECREF(current);
+ if (PyGreenlet_Switch(greenlet, NULL, NULL) == NULL) {
+ return NULL;
+ }
Py_RETURN_NONE;
}