Skip to content

Commit 1a0c9be

Browse files
authored
Merge pull request #3286 from PyO3/set-add-does-not-steal
Apparently, PySet_Add does not steal a reference, hence we should not forget to clean up ours.
2 parents 135535e + e006b34 commit 1a0c9be

File tree

3 files changed

+5
-4
lines changed

3 files changed

+5
-4
lines changed

newsfragments/3286.fixed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix memory leak when creating `PySet` or `PyFrozenSet` or returning types converted into these internally, e.g. `HashSet` or `BTreeSet`.

src/types/frozenset.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
use crate::types::PyIterator;
33
use crate::{
44
err::{self, PyErr, PyResult},
5-
IntoPyPointer, Py, PyObject,
5+
Py, PyObject,
66
};
77
use crate::{ffi, AsPyPointer, PyAny, Python, ToPyObject};
88

@@ -209,7 +209,7 @@ pub(crate) fn new_from_iter<T: ToPyObject>(
209209

210210
for obj in elements {
211211
unsafe {
212-
err::error_on_minusone(py, ffi::PySet_Add(ptr, obj.into_ptr()))?;
212+
err::error_on_minusone(py, ffi::PySet_Add(ptr, obj.as_ptr()))?;
213213
}
214214
}
215215

src/types/set.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
use crate::types::PyIterator;
33
use crate::{
44
err::{self, PyErr, PyResult},
5-
IntoPyPointer, Py,
5+
Py,
66
};
77
use crate::{ffi, AsPyPointer, PyAny, PyObject, Python, ToPyObject};
88
use std::ptr;
@@ -260,7 +260,7 @@ pub(crate) fn new_from_iter<T: ToPyObject>(
260260

261261
for obj in elements {
262262
unsafe {
263-
err::error_on_minusone(py, ffi::PySet_Add(ptr, obj.into_ptr()))?;
263+
err::error_on_minusone(py, ffi::PySet_Add(ptr, obj.as_ptr()))?;
264264
}
265265
}
266266

0 commit comments

Comments
 (0)