~ 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