See the attached patch.
--
Pietro Cerutti
I have pledged to give 10% of income to effective charities
and invite you to join me - https://givingwhatwecan.org
>From 9659dacfc2664a9279b8ac249c726c1780d54008 Mon Sep 17 00:00:00 2001
From: Pietro Cerutti <[email protected]>
Date: Mon, 28 Oct 2024 15:24:28 +0000
Subject: [PATCH] Unwrap the string when calling C_do_readlink
When calling C_do_readlink, the buffer argoment was being passed as a
scheme string instead of as the underlying C string.
---
posixunix.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/posixunix.scm b/posixunix.scm
index 3e244c24..5734b38f 100644
--- a/posixunix.scm
+++ b/posixunix.scm
@@ -743,7 +743,7 @@ static int set_file_mtime(C_word filename, C_word atime,
C_word mtime)
(lambda (fname location)
(let ((len (##core#inline
"C_do_readlink"
- (##sys#make-c-string fname location) buf)))
+ (##sys#make-c-string fname location) (##sys#make-c-string
buf location))))
(if (fx< len 0)
(posix-error #:file-error location "cannot read symbolic link"
fname)
(substring buf 0 len))))))
--
2.47.0