diff options
author | Alexey Borzenkov <snaury@gmail.com> | 2014-09-20 23:51:24 +0400 |
---|---|---|
committer | Alexey Borzenkov <snaury@gmail.com> | 2014-09-20 23:51:24 +0400 |
commit | da73bfd11cdc370162bedf9cb2793b93c3bf08e0 (patch) | |
tree | bdd509e74661100765997216ac4c8c508876894d | |
parent | 2f6a57f89006e098089e14eb0f82c376782aa585 (diff) | |
download | greenlet-da73bfd11cdc370162bedf9cb2793b93c3bf08e0.tar.gz |
Fix a memory leak in PyGreenlet_New
-rw-r--r-- | greenlet.c | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -1350,10 +1350,19 @@ PyGreenlet_New(PyObject *run, PyGreenlet *parent) Py_INCREF(run); g->run_info = run; } - if (parent == NULL) { - parent = PyGreenlet_GetCurrent(); + + if (parent != NULL) { + if (PyGreenlet_SetParent(g, parent)) { + Py_DECREF(g); + return NULL; + } + } else { + if ((g->parent = PyGreenlet_GetCurrent()) == NULL) { + Py_DECREF(g); + return NULL; + } } - PyGreenlet_SetParent(g, parent); + return g; } |