Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
pybind11
Commits
c9d32a81
Commit
c9d32a81
authored
Jul 27, 2019
by
Pauli Virtanen
Committed by
Wenzel Jakob
Jul 27, 2019
Browse files
numpy: fix refcount leak to dtype singleton (#1860)
PyArray_DescrFromType returns a new reference, not borrowed one
parent
4a3464fd
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
1 deletion
+12
-1
include/pybind11/numpy.h
include/pybind11/numpy.h
+1
-1
tests/test_numpy_array.py
tests/test_numpy_array.py
+11
-0
No files found.
include/pybind11/numpy.h
View file @
c9d32a81
...
@@ -1044,7 +1044,7 @@ public:
...
@@ -1044,7 +1044,7 @@ public:
static
pybind11
::
dtype
dtype
()
{
static
pybind11
::
dtype
dtype
()
{
if
(
auto
ptr
=
npy_api
::
get
().
PyArray_DescrFromType_
(
value
))
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!"
);
pybind11_fail
(
"Unsupported buffer format!"
);
}
}
};
};
...
...
tests/test_numpy_array.py
View file @
c9d32a81
...
@@ -434,3 +434,14 @@ def test_array_create_and_resize(msg):
...
@@ -434,3 +434,14 @@ def test_array_create_and_resize(msg):
def
test_index_using_ellipsis
():
def
test_index_using_ellipsis
():
a
=
m
.
index_using_ellipsis
(
np
.
zeros
((
5
,
6
,
7
)))
a
=
m
.
index_using_ellipsis
(
np
.
zeros
((
5
,
6
,
7
)))
assert
a
.
shape
==
(
6
,)
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment