]> Repositorios git - scryer-prolog.git/commitdiff
fix more things
authorBennet Bleßmann <[email protected]>
Sat, 19 Jul 2025 19:44:28 +0000 (21:44 +0200)
committerBennet Bleßmann <[email protected]>
Fri, 1 Aug 2025 18:20:09 +0000 (20:20 +0200)
src/lib/process.pl
src/machine/system_calls.rs

index f0a0a81910dfe926bd34de33e0390e8bb8cea210..f20e225ab8fbd42d03072f3bf2b13e498cb1ee70 100644 (file)
@@ -6,6 +6,7 @@
 
 process_create(Exe, Args, Options) :- 
     must_be(chars, Exe),
+    must_be(list(chars), Args),
     must_be(list, Options),
     check_option(Sin, find_stdio(Sin, stdin, Options), valid_stdio, [std], Stdin),
     check_option(Sout, find_stdio(Sout, stdout, Options), valid_stdio, [std], Stdout),
@@ -37,9 +38,9 @@ valid_stdio([file, Path]) :- must_be(chars, Path).
 find_env([env, ME], Options) :- member(env(E), Options), maplist(assign_to_list, E, ME).
 find_env([environment, ME], Options) :- member(environment(E), Options), maplist(assign_to_list, E, ME).
 
-assign_to_list(N=V, [N,v]).
+assign_to_list(N=V, [N,V]).
 
-valid_cwd(Cwd).
+valid_cwd(Cwd) :- var(Cwd) -> true ; must_be(chars).
 
 valid_env([env, E]) :- valid_env_(E).
 valid_env([environment, E]) :- valid_env_(E).
index 63aabd8b53bc9fcc33f4655c5edfd857ecd86482..d48ad5553bc97df823b57374807cdaefd5a086e8 100644 (file)
@@ -8510,7 +8510,7 @@ impl Machine {
                     .map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
 
                 self.machine_st
-                    .bind(args[2].as_var().unwrap(), stream.into());
+                    .bind(args[1].as_var().unwrap(), stream.into());
 
                 Stdio::from(writer)
             }
@@ -8539,11 +8539,10 @@ impl Machine {
 
                 self.indices
                     .add_stream(stream, atom!("process_create"), 3)
-                    .map_err(|stub_gen| stub_gen(&mut self.machine_st))
-                    .unwrap();
+                    .map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
 
                 self.machine_st
-                    .bind(args[2].as_var().unwrap(), stream.into());
+                    .bind(args[1].as_var().unwrap(), stream.into());
 
                 Stdio::from(reader)
             }