--- a/rust/hg-pyo3/src/ancestors.rs Sat Dec 07 18:54:31 2024 +0100
+++ b/rust/hg-pyo3/src/ancestors.rs Sat Dec 07 14:55:42 2024 +0100
@@ -19,11 +19,11 @@
};
use crate::convert_cpython::{
- proxy_index_extract, proxy_index_py_leak, py_leaked_borrow,
- py_leaked_borrow_mut, py_leaked_or_map_err,
+ proxy_index_py_leak, py_leaked_borrow, py_leaked_borrow_mut,
+ py_leaked_or_map_err,
};
use crate::exceptions::{map_lock_error, GraphError};
-use crate::revision::{rev_pyiter_collect, PyRevision};
+use crate::revision::{rev_pyiter_collect_with_py_index, PyRevision};
use crate::util::new_submodule;
use rusthg::revlog::PySharedIndex;
@@ -41,12 +41,8 @@
stoprev: PyRevision,
inclusive: bool,
) -> PyResult<Self> {
- // Safety: we don't leak the "faked" reference out of
- // `UnsafePyLeaked`
- let initvec: Vec<_> = {
- let borrowed_idx = unsafe { proxy_index_extract(index_proxy)? };
- rev_pyiter_collect(initrevs, borrowed_idx)?
- };
+ let initvec: Vec<_> =
+ rev_pyiter_collect_with_py_index(initrevs, index_proxy)?;
let (py, leaked_idx) = proxy_index_py_leak(index_proxy)?;
let res_ait = unsafe {
leaked_idx.map(py, |idx| {
@@ -99,12 +95,8 @@
inclusive: bool,
) -> PyResult<Self> {
let cloned_proxy = index_proxy.clone().unbind();
- let initvec: Vec<_> = {
- // Safety: we don't leak the "faked" reference out of
- // `UnsafePyLeaked`
- let borrowed_idx = unsafe { proxy_index_extract(index_proxy)? };
- rev_pyiter_collect(initrevs, borrowed_idx)?
- };
+ let initvec: Vec<_> =
+ rev_pyiter_collect_with_py_index(initrevs, index_proxy)?;
let (py, leaked_idx) = proxy_index_py_leak(index_proxy)?;
// Safety: we don't leak the "faked" reference out of
// `UnsafePyLeaked`