~ chicken-core (chicken-5) 617d2dee613a1c48e27a1d9c72927763f895e0f2
commit 617d2dee613a1c48e27a1d9c72927763f895e0f2
Author: Mario Domenech Goulart <mario@parenteses.org>
AuthorDate: Thu Apr 1 21:11:34 2021 +0200
Commit: Peter Bex <peter@more-magic.net>
CommitDate: Fri Apr 9 16:26:12 2021 +0200
egg-download: handle eof in read-chunks
Handle eof objects that might be returned by `read-line' in
`read-chunks', in which cases `string->number' would break, causing
the errors that we sometimes observe in salmonella jobs (see #1744).
Hopefully fixes #1744
Signed-off-by: Peter Bex <peter@more-magic.net>
diff --git a/NEWS b/NEWS
index 18c225c5..7a2373c0 100644
--- a/NEWS
+++ b/NEWS
@@ -51,6 +51,9 @@
still requires PLATFORM to be set, and it can still be provided
manually, but it is no longer required in the common case.
+- Tools
+ - Fixed a bug in chicken-install (#1744) that would cause
+ `Error: (string->number) bad argument type: #!eof` in some cases.
5.2.0
diff --git a/egg-download.scm b/egg-download.scm
index 9906ca89..dc97b376 100644
--- a/egg-download.scm
+++ b/egg-download.scm
@@ -208,7 +208,9 @@
(define (read-chunks in)
(let get-chunks ((data '()))
- (let ((size (string->number (read-line in) 16)))
+ (let* ((line (read-line in))
+ (size (and (not (eof-object? line))
+ (string->number line 16))))
(cond ((not size)
(error "invalid response from server - please try again"))
((zero? size)
Trap