~ chicken-core (chicken-5) 13d526f517d228cecaacbcf8ca53b548f2be9b44
commit 13d526f517d228cecaacbcf8ca53b548f2be9b44 Author: Mario Domenech Goulart <address@hidden> AuthorDate: Sun Jan 19 20:08:17 2014 -0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Tue Jan 28 09:16:08 2014 +0100 srfi-13: fix bug in string-trim-right The bug in srfi-13's reference implementation was found by Seth Alves, who also provided the fix (see http://lists.gnu.org/archive/html/chicken-hackers/2014-01/msg00016.html ) His patch has been amended with some tests. Signed-off-by: Evan Hanson <address@hidden> diff --git a/srfi-13.scm b/srfi-13.scm index 876a2bda..65b748f9 100644 --- a/srfi-13.scm +++ b/srfi-13.scm @@ -1066,7 +1066,7 @@ (let-optionals* criteria+start+end ((criteria char-set:whitespace) rest) (let-string-start+end (start end) string-trim-right s rest (cond ((string-skip-right s criteria start end) => - (lambda (i) (%substring/shared s 0 (+ 1 i)))) + (lambda (i) (%substring/shared s start (+ 1 i)))) (else ""))))) (define (string-trim-both s . criteria+start+end) diff --git a/tests/srfi-13-tests.scm b/tests/srfi-13-tests.scm index a9735cc6..1262b82d 100644 --- a/tests/srfi-13-tests.scm +++ b/tests/srfi-13-tests.scm @@ -706,3 +706,11 @@ (test "string-index-right" #f (string-index-right "abbb" #\a 1)) (test "string-skip-right" #f (string-skip-right "abbb" #\b 1)) + +;; Tests to check the string-trim-right issue found by Seth Alves +;; http://lists.gnu.org/archive/html/chicken-hackers/2014-01/msg00016.html +(test "string-trim-right" "" (string-trim-right "" char-whitespace? 0 0)) +(test "string-trim-right" "" (string-trim-right "a" char-whitespace? 0 0)) +(test "string-trim-right" "" (string-trim-right "a " char-whitespace? 0 0)) +(test "string-trim-right" "bc" (string-trim-right "abc " char-whitespace? 1)) +(test "string-trim-right" "" (string-trim-right "abc " char-whitespace? 4 4))Trap