From 1f8cf449ad58e63b014ce8504dc1a10219b59715 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Sat, 15 Aug 2026 14:53:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20generator=20resume=20=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=BD=92=E8=BF=98=20native=5Fcall=5Fdepth=20?= =?UTF-8?q?=E9=98=B2=E6=89=A7=E8=A1=8C=E6=9C=9F=20GC=20=E6=B0=B8=E4=B9=85?= =?UTF-8?q?=E8=B7=B3=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_vm/src/generator.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/oxide_vm/src/generator.rs b/crates/oxide_vm/src/generator.rs index bbe9fc9..1c0f053 100644 --- a/crates/oxide_vm/src/generator.rs +++ b/crates/oxide_vm/src/generator.rs @@ -271,6 +271,7 @@ impl Vm { unsafe { (*state_ptr).args = args }; if let Err(e) = push_res { self.restore_inline_state(saved); + self.native_call_depth -= 1; return Err(e); } unsafe { (*state_ptr).phase = GeneratorPhase::Running }; @@ -281,6 +282,7 @@ impl Vm { if restore_res.is_err() { // 挂起状态跨 run:sub_modules 已重建,无法恢复(与动态函数同限制)。 self.restore_inline_state(saved); + self.native_call_depth -= 1; return Err("generator suspended across runs is no longer valid".into()); } state.phase = GeneratorPhase::Running;