From eb6ac6efcdb6fe72fdecb4aa7161e86d0e1d3282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 28 May 2014 22:19:16 +0200 Subject: [PATCH] tests: Add test for . * test-suite/tests/r6rs-ports.test ("7.2.8 Binary Input")("http://bugs.gnu.org/17466"): New test. --- test-suite/tests/r6rs-ports.test | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test-suite/tests/r6rs-ports.test b/test-suite/tests/r6rs-ports.test index 07c9f4465..dba803601 100644 --- a/test-suite/tests/r6rs-ports.test +++ b/test-suite/tests/r6rs-ports.test @@ -137,6 +137,26 @@ (close-port port) (get-bytevector-n port 3))) + (let ((expected (make-bytevector 20 (char->integer #\a)))) + (pass-if-equal "http://bugs.gnu.org/17466" + ;; is about a memory corruption + ;; whereas bytevector shrunk in 'get-bytevector-n' would keep + ;; referring to the previous (larger) bytevector. + expected + (let loop ((count 50)) + (if (zero? count) + expected + (let ((bv (call-with-input-string "aaaaaaaaaaaaaaaaaaaa" + (lambda (port) + (get-bytevector-n port 4096))))) + ;; Cause the 4 KiB bytevector initially created by + ;; 'get-bytevector-n' to be reclaimed. + (make-bytevector 4096) + + (if (equal? bv expected) + (loop (- count 1)) + bv)))))) + (pass-if "get-bytevector-n! [short]" (let* ((port (open-input-string "GNU Guile")) (bv (make-bytevector 4))