Avoid locking current context on capture_inner

This commit is contained in:
Wildan M
2026-04-27 01:54:43 +07:00
parent e9f50698dd
commit c2b20abc03
+13 -9
View File
@@ -485,15 +485,19 @@ impl UserInner {
});
}
let cur_space_lock = AddrSpace::current()?;
let dst_space_lock = {
Arc::clone(
context_weak
.upgrade()
.ok_or(Error::new(ESRCH))?
.read(token.token())
.addr_space()?,
)
let (cur_space_lock, dst_space_lock) = {
match context_weak.upgrade() {
Some(ctx) if context::is_current(&ctx) => {
let cur_space_lock = AddrSpace::current()?;
// Will bail below this code
(cur_space_lock, Arc::clone(&cur_space_lock))
}
Some(ctx) => (
AddrSpace::current()?,
Arc::clone(ctx.read(token.token()).addr_space()?),
),
None => return Err(Error::new(ESRCH)),
}
};
if Arc::ptr_eq(&dst_space_lock, &cur_space_lock) {