~ chicken-core (chicken-5) 6044790def02eb63957c989795e6b1b9ebc76920
commit 6044790def02eb63957c989795e6b1b9ebc76920
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Thu Dec 15 11:15:33 2011 +0100
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Thu Dec 15 11:16:24 2011 +0100
disabled specialization for write-byte that could cause output to a closed port
diff --git a/types.db b/types.db
index 06ad8af5..5d8c746f 100644
--- a/types.db
+++ b/types.db
@@ -625,6 +625,14 @@
(write (#(procedure #:enforce) write (* #!optional output-port) undefined))
(display (#(procedure #:enforce) display (* #!optional output-port) undefined))
(write-char (#(procedure #:enforce) write-char (char #!optional output-port) undefined))
+
+;;XXX Yes, that would be nice, but the output-port may be closed
+#;(##sys#write-char-0
+ (#(procedure #:enforce) ##sys#write-char-0 (char output-port) undefined)
+ ((char output-port)
+ (let ((#(tmp) #(1)))
+ ((##sys#slot (##sys#slot #(tmp) '2) '2) #(tmp) #(2)))))
+
(newline (#(procedure #:enforce) newline (#!optional output-port) undefined))
(with-input-from-file
@@ -1248,11 +1256,7 @@
(read-string! (#(procedure #:enforce) read-string! (fixnum string #!optional input-port fixnum) fixnum))
(read-token (#(procedure #:enforce) read-token ((procedure (char) *) #!optional input-port) string))
(sprintf (#(procedure #:enforce) sprintf (string #!rest) string))
-
-(write-byte (#(procedure #:enforce) write-byte (fixnum #!optional output-port) undefined)
- ((fixnum port) (##sys#write-char-0 (integer->char #(1)) #(2)))
- ((fixnum) (##sys#write-char-0 (integer->char #(1)) ##sys#standard-output)))
-
+(write-byte (#(procedure #:enforce) write-byte (fixnum #!optional output-port) undefined))
(write-line (#(procedure #:enforce) write-line (string #!optional output-port) undefined))
(write-string (#(procedure #:enforce) write-string (string #!optional * output-port) undefined))
Trap