~ chicken-core (chicken-5) d3a304ef69d067ea490a357b873ab438b42d003e
commit d3a304ef69d067ea490a357b873ab438b42d003e
Author: Mario Domenech Goulart <mario@parenteses.org>
AuthorDate: Mon Aug 22 22:20:04 2022 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Tue Aug 23 10:54:18 2022 +0200
Make C_curdir get the buffer size as argument
Make C_curdir get the buffer size as argument, so that it can be used
in the call to getcwd.
Also replace the hardcoded value (1024) with the value of C_MAX_PATH
for the maximum buffer size in the call to C_curdir.
Signed-off-by: felix <felix@call-with-current-continuation.org>
diff --git a/library.scm b/library.scm
index a8103a47..9fc663e0 100644
--- a/library.scm
+++ b/library.scm
@@ -5883,7 +5883,7 @@ EOF
#>
#define C_chdir(str) C_fix(chdir(C_c_string(str)))
-#define C_curdir(buf) (getcwd(C_c_string(buf), 1024) ? C_fix(strlen(C_c_string(buf))) : C_SCHEME_FALSE)
+#define C_curdir(buf, size) (getcwd(C_c_string(buf), size) ? C_fix(strlen(C_c_string(buf))) : C_SCHEME_FALSE)
#define C_getenventry(i) (environ[ i ])
#ifdef HAVE_CRT_EXTERNS_H
@@ -5949,8 +5949,9 @@ static C_word C_fcall C_setenv(C_word x, C_word y) {
(define current-directory
(getter-with-setter
(lambda ()
- (let* ((buffer (make-string 1024))
- (len (##core#inline "C_curdir" buffer)))
+ (let* ((buffer-size (foreign-value "C_MAX_PATH" size_t))
+ (buffer (make-string buffer-size))
+ (len (##core#inline "C_curdir" buffer buffer-size)))
(unless ##sys#windows-platform ; FIXME need `cond-expand' here
(##sys#update-errno))
(if len
Trap