Fix string-for-primitive as pointed out by Matt.
authorChris Hanson <org/chris-hanson/cph>
Wed, 17 May 2017 02:38:10 +0000 (19:38 -0700)
committerChris Hanson <org/chris-hanson/cph>
Wed, 17 May 2017 02:38:10 +0000 (19:38 -0700)
src/runtime/ustring.scm

index d0b54b9511eabb1e9d16148cf0e34e7a543fba1f..2cada76b39d80691d34356a8eed897542a006a07 100644 (file)
@@ -2065,12 +2065,12 @@ USA.
        (else (every-loop char-8-bit? ustring3-ref string start end))))))
 
 (define (string-for-primitive string)
-  (if (and (not (slice? string))
+  (if (and (or (legacy-string? string)
+              (and (ustring? string)
+                   (fix:= 1 (ustring-cp-size string))))
           (let ((end (string-length string)))
-            (case (ustring-cp-size string)
-              ((1) (every-loop char-ascii? ustring1-ref string 0 end))
-              ((2) (every-loop char-ascii? ustring2-ref string 0 end))
-              (else (every-loop char-ascii? ustring3-ref string 0 end)))))
+            (every-loop (lambda (cp) (fix:< cp #x80))
+                        cp1-ref string 0 end)))
       string
       (string->utf8 string)))