[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-users] Bug in process-run
From: |
Felix Winkelmann |
Subject: |
Re: [Chicken-users] Bug in process-run |
Date: |
Mon, 14 Jul 2003 08:31:10 +0200 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.0) Gecko/20020530 |
Peter Wang wrote:
process-run seems to be passing one too many arguments to the child
process (chicken version 1, build 12).
--- t.c ---
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
printf("argc = %d\n", argc);
for (i=0; i < argc; i++) printf("%d: %s\n", i, argv[i]);
return 0;
}
--- s.scm ---
#!/usr/local/bin/csi -script
(receive _ (process-wait (process-run "./a.out" (list "1" "2"))) #f)
--- the test ---
$ gcc t.c -o a.out
$ ./s.scm
argc = 4
0: a.out
1: 1
2: 2
3:
Many thanks for your bug report, here is a quick
fix: in posix.scm, change the implementation of
`C_set_exec_arg()' to:
void C_fcall C_set_exec_arg(int i, char *a, int len) {
char *ptr;
if(a == NULL) ptr = NULL;
else {
ptr = (char *)C_malloc(len + 1); /* this should be checked... */
C_memcpy(ptr, a, len);
ptr[ len ] = '\0';
}
C_exec_args[ i ] = ptr;
}
cheers,
felix