Commit c9d32a81 by Pauli Virtanen Committed by Wenzel Jakob

numpy: fix refcount leak to dtype singleton (#1860)

PyArray_DescrFromType returns a new reference, not borrowed one
parent 4a3464fd
......@@ -1044,7 +1044,7 @@ public:
static pybind11::dtype dtype() {
if (auto ptr = npy_api::get().PyArray_DescrFromType_(value))
return reinterpret_borrow<pybind11::dtype>(ptr);
return reinterpret_steal<pybind11::dtype>(ptr);
pybind11_fail("Unsupported buffer format!");
}
};
......
......@@ -434,3 +434,14 @@ def test_array_create_and_resize(msg):
def test_index_using_ellipsis():
a = m.index_using_ellipsis(np.zeros((5, 6, 7)))
assert a.shape == (6,)
@pytest.unsupported_on_pypy
def test_dtype_refcount_leak():
from sys import getrefcount
dtype = np.dtype(np.float_)
a = np.array([1], dtype=dtype)
before = getrefcount(dtype)
m.ndim(a)
after = getrefcount(dtype)
assert after == before
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment