~ chicken-core (chicken-5) edf590c27d134779243adfd29e4cf3e39171b7b9
commit edf590c27d134779243adfd29e4cf3e39171b7b9 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Wed May 14 15:51:03 2025 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Wed May 14 15:51:03 2025 +0100 win32 subprocess invocation does not quote (exec, spawn), also fix argv conversion diff --git a/posixwin.scm b/posixwin.scm index 9c47dcbf..90f4b209 100644 --- a/posixwin.scm +++ b/posixwin.scm @@ -735,16 +735,17 @@ static int set_file_mtime(C_word filename, C_word atime, C_word mtime) (define c-string->allocated-pointer (foreign-lambda* c-pointer ((scheme-object o)) - "char *ptr = C_malloc(C_header_size(o) * sizeof(wchar_t)); \n" + "int len = C_header_size(o) * sizeof(wchar_t)); \n" + "char *ptr = C_malloc(len); \n" "if (ptr != NULL) {\n" " wchar_t *u = C_utf16(o, 0); \n" - " C_memcpy(ptr, u, wcslen(u) + 1); \n" + " C_memcpy(ptr, u, len + 1); \n" "}\n" "C_return(ptr);")) (set! chicken.process#process-execute (lambda (filename #!optional (arglist '()) envlist exactf) - (let ((argconv (if exactf (lambda (x) x) quote-arg-string))) + (let ((argconv (lambda (x) x))) (call-with-exec-args 'process-execute filename argconv arglist envlist (lambda (prg argbuf envbuf) @@ -757,7 +758,7 @@ static int set_file_mtime(C_word filename, C_word atime, C_word mtime) (set! chicken.process#process-spawn (lambda (mode filename #!optional (arglist '()) envlist exactf) - (let ((argconv (if exactf (lambda (x) x) quote-arg-string))) + (let ((argconv (lambda (x) x))) (##sys#check-fixnum mode 'process-spawn) (call-with-exec-args 'process-spawn filename argconv arglist envlistTrap