]> Repositorios git - scryer-prolog.git/commitdiff
add comments and try to fix binding the child process pid
authorBennet Bleßmann <[email protected]>
Sat, 19 Jul 2025 20:56:51 +0000 (22:56 +0200)
committerBennet Bleßmann <[email protected]>
Fri, 1 Aug 2025 18:20:20 +0000 (20:20 +0200)
src/machine/system_calls.rs

index d48ad5553bc97df823b57374807cdaefd5a086e8..ecffbdb79ee16c12c972de4d9ecc740cdfa2c8ba 100644 (file)
@@ -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(())
             }