@@ -14,9 +14,10 @@ fn arg_vec(str prog, vec[str] args) -> vec[sbuf] {
14
14
}
15
15
16
16
fn run_program ( str prog , vec[ str] args ) -> int {
17
- auto pid =
18
- rustrt:: rust_run_program ( vec:: buf[ sbuf] ( arg_vec ( prog, args) ) , 0 , 0 ,
19
- 0 ) ;
17
+ // Note: we have to hold on to this vector reference while we hold a
18
+ // pointer to its buffer
19
+ auto argv = arg_vec ( prog, args) ;
20
+ auto pid = rustrt:: rust_run_program ( vec:: buf ( argv) , 0 , 0 , 0 ) ;
20
21
ret os:: waitpid ( pid) ;
21
22
}
22
23
@@ -32,8 +33,11 @@ type program =
32
33
fn start_program ( str prog , vec[ str] args ) -> @program {
33
34
auto pipe_input = os:: pipe ( ) ;
34
35
auto pipe_output = os:: pipe ( ) ;
36
+ // Note: we have to hold on to this vector reference while we hold a
37
+ // pointer to its buffer
38
+ auto argv = arg_vec ( prog, args) ;
35
39
auto pid =
36
- rustrt:: rust_run_program ( vec:: buf[ sbuf ] ( arg_vec ( prog , args ) ) ,
40
+ rustrt:: rust_run_program ( vec:: buf ( argv ) ,
37
41
pipe_input. _0 , pipe_output. _1 , 0 ) ;
38
42
if ( pid == -1 ) { fail; }
39
43
os:: libc:: close ( pipe_input. _0 ) ;
0 commit comments