>From 51e8dc3167f9f1319a1dc833fa0a3f269fe5651d Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Sat, 8 Jun 2013 17:35:03 +0200 Subject: [PATCH 2/2] Do not reset string size upon closing a string output port --- library.scm | 3 +-- tests/port-tests.scm | 13 +++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/library.scm b/library.scm index 16e3943..a325f8a 100644 --- a/library.scm +++ b/library.scm @@ -3556,8 +3556,7 @@ EOF [output (##sys#slot p 12)] ) (##core#inline "C_substring_copy" str output 0 len position) (##sys#setislot p 10 (fx+ position len)) ) ) ) - (lambda (p) ; close - (##sys#setislot p 10 (##sys#slot p 11)) ) + void ; close (lambda (p) #f) ; flush-output (lambda (p) ; char-ready? (fx< (##sys#slot p 10) (##sys#slot p 11)) ) diff --git a/tests/port-tests.scm b/tests/port-tests.scm index ca334e9..409c552 100644 --- a/tests/port-tests.scm +++ b/tests/port-tests.scm @@ -42,6 +42,17 @@ EOF (read-line p))) (assert (= 20 (length (read-lines (open-input-string *text*))))) +(let ((out (open-output-string))) + (test-equal "Initially, output string is empty" + (get-output-string out) "") + (display "foo" out) + (test-equal "output can be extracted from output string" + (get-output-string out) "foo") + (close-output-port out) + (test-equal "closing a string output port has no effect on the returned data" + (get-output-string out) "foo") + (test-error "writing to a closed string output port is an error" + (display "bar" out))) ;;; copy-port @@ -303,3 +314,5 @@ EOF (test-port-position read-tcp-line/pos)) ;;; + +(test-end) -- 1.8.2.3