~ chicken-core (chicken-5) c6791b7b6c2e4cccc6c15ab646b304eff2209a22


commit c6791b7b6c2e4cccc6c15ab646b304eff2209a22
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Thu Nov 19 16:51:25 2015 +0100
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Fri Jan 1 22:20:48 2016 +1300

    Make ##sys#with-print-limit a bit more consistent
    
    This fixes #951, for the most part.
    
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/library.scm b/library.scm
index 9be436a4..a6a27f84 100644
--- a/library.scm
+++ b/library.scm
@@ -3896,8 +3896,7 @@ EOF
 (define ##sys#print-exit (make-parameter #f))
 
 (define ##sys#print
-  (let ((string-append string-append)
-	(case-sensitive case-sensitive)
+  (let ((case-sensitive case-sensitive)
 	(keyword-style keyword-style))
     (lambda (x readable port)
       (##sys#check-output-port port #t #f)
@@ -3911,12 +3910,11 @@ EOF
 	      (let* ((len (##sys#size str))
 		     (cpp0 (current-print-length))
 		     (cpl (fx+ cpp0 len)) )
-		(if (fx>= cpl length-limit)
-		    (cond ((fx> len 3)
-			   (let ((n (fx- length-limit cpp0)))
-			     (when (fx> n 0) (outstr0 port (##sys#substring str 0 n)))
-			     (outstr0 port "...") ) )
-			  (else (outstr0 port str)) )
+		(if (fx> cpl length-limit)
+		    (let ((n (fx- length-limit cpp0)))
+		      (when (fx> n 0) (outstr0 port (##sys#substring str 0 n)))
+		      (outstr0 port "...")
+		      ((##sys#print-exit) (##sys#void)))
 		    (outstr0 port str) )
 		(current-print-length cpl) )
 	      (outstr0 port str) ) )
@@ -3930,7 +3928,7 @@ EOF
 	      (current-print-length (fx+ cpp0 1))
 	      (when (fx>= cpp0 length-limit)
 		(outstr0 port "...")
-		((##sys#print-exit) #t) )))
+		((##sys#print-exit) (##sys#void)))))
 	  ((##sys#slot (##sys#slot port 2) 2) port chr))
 
 	(define (specialchar? chr)
Trap