~ chicken-core (chicken-5) 4491642ff234403483f39937467b4fdd1ce9a028
commit 4491642ff234403483f39937467b4fdd1ce9a028
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Aug 28 22:07:30 2013 +0200
Commit: Peter Bex <peter.bex@xs4all.nl>
CommitDate: Fri Aug 30 13:57:47 2013 +0200
debugging output for finalizer-management blindly wrote to stdout, which could interfere with code that uses with-output-to-string, for example.
Signed-off-by: Peter Bex <peter.bex@xs4all.nl>
diff --git a/library.scm b/library.scm
index e01e8688..5c101e32 100644
--- a/library.scm
+++ b/library.scm
@@ -4704,32 +4704,48 @@ EOF
(define ##sys#set-finalizer! (##core#primitive "C_register_finalizer"))
(define set-finalizer!
- (lambda (x y)
- (when (fx>= (##sys#fudge 26) _max_pending_finalizers)
- (if (##core#inline "C_resize_pending_finalizers" (fx* 2 _max_pending_finalizers))
- (begin
- (set! ##sys#pending-finalizers (##sys#grow-vector ##sys#pending-finalizers
- (fx+ (fx* 2 _max_pending_finalizers) 1)
- (##core#undefined)))
- (when (##sys#fudge 13)
- (print "[debug] too many finalizers (" (##sys#fudge 26)
- "), resized max finalizers to " _max_pending_finalizers "...") ) )
- (begin
- (when (##sys#fudge 13)
- (print "[debug] too many finalizers (" (##sys#fudge 26) "), forcing ...") )
- (##sys#force-finalizers) ) ) )
- (##sys#set-finalizer! x y) ) )
+ (let ((string-append string-append))
+ (lambda (x y)
+ (when (fx>= (##sys#fudge 26) _max_pending_finalizers)
+ (cond ((##core#inline "C_resize_pending_finalizers" (fx* 2 _max_pending_finalizers))
+ (set! ##sys#pending-finalizers (##sys#grow-vector ##sys#pending-finalizers
+ (fx+ (fx* 2 _max_pending_finalizers) 1)
+ (##core#undefined)))
+ (when (##sys#fudge 13)
+ (##sys#print
+ (string-append
+ "[debug] too many finalizers ("
+ (##sys#number->string (##sys#fudge 26))
+ "), resized max finalizers to "
+ (##sys#number->string _max_pending_finalizers)
+ "\n")
+ #f ##sys#standard-error)))
+ (else
+ (when (##sys#fudge 13)
+ (##sys#print
+ (string-append
+ "[debug] too many finalizers ("
+ (##sys#fudge 26)
+ "), forcing ...\n")
+ #f ##sys#standard-error))
+ (##sys#force-finalizers) ) ) )
+ (##sys#set-finalizer! x y) ) ) )
(define ##sys#run-pending-finalizers
- (let ([vector-fill! vector-fill!]
- [working #f] )
+ (let ((vector-fill! vector-fill!)
+ (string-append string-append)
+ (working #f) )
(lambda (state)
(unless working
(set! working #t)
(let* ((c (##sys#slot ##sys#pending-finalizers 0)) )
(when (##sys#fudge 13)
- (print "[debug] running " c " finalizer(s) (" (##sys#fudge 26) " live, "
- (##sys#fudge 27) " allocated) ..."))
+ (##sys#print
+ (string-append "[debug] running " (##sys#number->string c)
+ " finalizer(s) (" (##sys#number->string (##sys#fudge 26))
+ " live, " (##sys#number->string (##sys#fudge 27))
+ " allocated) ...\n")
+ #f ##sys#standard-error))
(do ([i 0 (fx+ i 1)])
((fx>= i c))
(let ([i2 (fx+ 1 (fx* i 2))])
Trap