diff options
author | Alexey Borzenkov <snaury@gmail.com> | 2014-09-20 23:54:05 +0400 |
---|---|---|
committer | Alexey Borzenkov <snaury@gmail.com> | 2014-09-20 23:54:05 +0400 |
commit | d23996a140defe3bf367d4f9179369980cc68843 (patch) | |
tree | b10a58dac5b7063a60f56865a16f221429918e21 | |
parent | da73bfd11cdc370162bedf9cb2793b93c3bf08e0 (diff) | |
download | greenlet-d23996a140defe3bf367d4f9179369980cc68843.tar.gz |
Fix incorrect uses of PyGreenlet_GetCurrent() in tests
-rw-r--r-- | tests/_test_extension.c | 16 |
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; } |