From: Bennet Bleßmann Date: Sat, 19 Jul 2025 20:56:51 +0000 (+0200) Subject: add comments and try to fix binding the child process pid X-Git-Tag: v0.10.0~35^2^2~31 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=82e989f63142fbbe19a8b772f5123b18aba0e7e7;p=scryer-prolog.git add comments and try to fix binding the child process pid --- diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index d48ad555..ecffbdb7 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -8399,13 +8399,19 @@ impl Machine { functor_stub(atom!("process_create"), 3) } + // String let exe_r = self.deref_register(1); + // [String,...] let args_r = self.deref_register(2); + // [std] | [null] | [pipe, Var] | [file, String] let stdin_r = self.deref_register(3); let stdout_r = self.deref_register(4); let stderr_r = self.deref_register(5); + // [env | environment, [[String, String],...]] let env_r = self.deref_register(6); + // Var | String let cwd_r = self.deref_register(7); + // Var let pid_r = self.deref_register(8); let exe = self.machine_st.value_to_str_like(exe_r).unwrap(); @@ -8484,11 +8490,16 @@ impl Machine { match command.spawn() { Ok(child) => { - self.machine_st - .unify_fixnum(Fixnum::build_with(child.id()), pid_r); + let pid = child.id(); + self.machine_st.bind( + pid_r.as_var().unwrap(), + fixnum_as_cell!(Fixnum::build_with(pid)), + ); Ok(()) } - Err(_) => { + Err(err) => { + // TODO give better error indication + dbg!(err); self.machine_st.fail = true; Ok(()) }