chicken-users
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]