diff --git a/newsfragments/3286.fixed.md b/newsfragments/3286.fixed.md new file mode 100644 index 00000000000..cfe647b9eb0 --- /dev/null +++ b/newsfragments/3286.fixed.md @@ -0,0 +1 @@ +Fix memory leak when creating `PySet` or `PyFrozenSet` or returning types converted into these internally, e.g. `HashSet` or `BTreeSet`. diff --git a/src/types/frozenset.rs b/src/types/frozenset.rs index cc5b1da4ad5..e759e97179b 100644 --- a/src/types/frozenset.rs +++ b/src/types/frozenset.rs @@ -2,7 +2,7 @@ use crate::types::PyIterator; use crate::{ err::{self, PyErr, PyResult}, - IntoPyPointer, Py, PyObject, + Py, PyObject, }; use crate::{ffi, AsPyPointer, PyAny, Python, ToPyObject}; @@ -209,7 +209,7 @@ pub(crate) fn new_from_iter( for obj in elements { unsafe { - err::error_on_minusone(py, ffi::PySet_Add(ptr, obj.into_ptr()))?; + err::error_on_minusone(py, ffi::PySet_Add(ptr, obj.as_ptr()))?; } } diff --git a/src/types/set.rs b/src/types/set.rs index 493d7411d6a..b20e4ef1cb9 100644 --- a/src/types/set.rs +++ b/src/types/set.rs @@ -2,7 +2,7 @@ use crate::types::PyIterator; use crate::{ err::{self, PyErr, PyResult}, - IntoPyPointer, Py, + Py, }; use crate::{ffi, AsPyPointer, PyAny, PyObject, Python, ToPyObject}; use std::ptr; @@ -260,7 +260,7 @@ pub(crate) fn new_from_iter( for obj in elements { unsafe { - err::error_on_minusone(py, ffi::PySet_Add(ptr, obj.into_ptr()))?; + err::error_on_minusone(py, ffi::PySet_Add(ptr, obj.as_ptr()))?; } }