diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2020-05-22 07:42:04 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-22 07:42:04 -0600 |
commit | fc2518ba6b11fc52b0ff477b9e83576be90562d8 (patch) | |
tree | 6813c1a4841eab45f4b87ea2fc947ab69c78c0e3 /numpy | |
parent | 16692b1a3c241245fabb98741c0e90e630ab3822 (diff) | |
parent | 8029c4565a8893b13fa6a5818f1d5888c82fe404 (diff) | |
download | numpy-fc2518ba6b11fc52b0ff477b9e83576be90562d8.tar.gz |
Merge pull request #16336 from seberg/trivial-refcountfix-add_docstring
BUG: Fix refcounting in add_newdoc
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/core/src/multiarray/compiled_base.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/numpy/core/src/multiarray/compiled_base.c b/numpy/core/src/multiarray/compiled_base.c index b63bca368..7a232b5d9 100644 --- a/numpy/core/src/multiarray/compiled_base.c +++ b/numpy/core/src/multiarray/compiled_base.c @@ -1444,6 +1444,7 @@ arr_add_docstring(PyObject *NPY_UNUSED(dummy), PyObject *args) #define _ADDDOC(doc, name) \ if (!(doc)) { \ doc = docstr; \ + Py_INCREF(str); /* hold on to string (leaks reference) */ \ } \ else if (strcmp(doc, docstr) != 0) { \ PyErr_Format(PyExc_RuntimeError, "%s method %s", name, msg); \ @@ -1476,6 +1477,7 @@ arr_add_docstring(PyObject *NPY_UNUSED(dummy), PyObject *args) doc_attr = PyObject_GetAttrString(obj, "__doc__"); if (doc_attr != NULL && doc_attr != Py_None && (PyUnicode_Compare(doc_attr, str) != 0)) { + Py_DECREF(doc_attr); if (PyErr_Occurred()) { /* error during PyUnicode_Compare */ return NULL; @@ -1495,7 +1497,6 @@ arr_add_docstring(PyObject *NPY_UNUSED(dummy), PyObject *args) #undef _ADDDOC - Py_INCREF(str); Py_RETURN_NONE; } |