1.0.17.22: respect fill-pointers when trimming strings (regression 1.0.12.23)
authorNikodemus Siivola <nikodemus@random-state.net>
Tue, 3 Jun 2008 15:27:21 +0000 (15:27 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Tue, 3 Jun 2008 15:27:21 +0000 (15:27 +0000)
 * Revealed by ansi-tests.

NEWS
src/code/string.lisp
tests/string.pure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 5141699..36c8581 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -19,6 +19,8 @@ changes in sbcl-1.0.18 relative to 1.0.17:
   * fixed some bugs revealed by Paul Dietz' test suite:
     ** NIL is a valid function name (regression at 1.0.13.38)
     ** FILL on lists was missing its return value (regression at 1.0.12.27)
+    ** STRING-TRIM, STRING-LEFT-TRIM, and STRING-RIGHT-TRIMP did not respect
+       fill pointers properly (regression at 1.0.12.23)
 
 changes in sbcl-1.0.17 relative to 1.0.16:
   * temporary regression: user code can no longer allocate closure
index dede948..439371b 100644 (file)
@@ -423,9 +423,9 @@ new string COUNT long filled with the fill character."
                                               :test #'char=)))
                                (1+ index))
                             (declare (fixnum index)))
-                          (length string))))
+                          end)))
       (if (and (eql left-end 0)
-               (eql right-end (length string)))
+               (eql right-end end))
           string
           (subseq (the simple-string string) left-end right-end)))))
 
index 82ccc94..cd96fb1 100644 (file)
   (make-test " x x " "x x " " x x" "x x"))
 
 
+;;; Trimming should respect fill-pointers
+(let* ((s (make-array 9 :initial-contents "abcdabadd" :element-type
+                      'character :fill-pointer 7))
+       (s2 (string-left-trim "ab" s))
+       (s3 (string-right-trim "ab" s)))
+  (assert (equal "abcdaba" s))
+  (assert (equal "cdaba" s2))
+  (assert (equal "abcd" s3)))
index fb141ad..3ac39ea 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.17.21"
+"1.0.17.22"