summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2020-05-22 07:42:04 -0600
committerGitHub <noreply@github.com>2020-05-22 07:42:04 -0600
commitfc2518ba6b11fc52b0ff477b9e83576be90562d8 (patch)
tree6813c1a4841eab45f4b87ea2fc947ab69c78c0e3 /numpy
parent16692b1a3c241245fabb98741c0e90e630ab3822 (diff)
parent8029c4565a8893b13fa6a5818f1d5888c82fe404 (diff)
downloadnumpy-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.c3
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;
}