Character case mappers should preserve the bits.
authorChris Hanson <org/chris-hanson/cph>
Sat, 11 Feb 2017 04:54:35 +0000 (20:54 -0800)
committerChris Hanson <org/chris-hanson/cph>
Sat, 11 Feb 2017 04:54:35 +0000 (20:54 -0800)
src/runtime/char.scm

index d413d9e7c932c834ac05c5cf528097a7d13cdf95..fa8ce869da614d815aa572ffd78a201a086d65fe 100644 (file)
@@ -132,15 +132,18 @@ USA.
 
 (define (char-downcase char)
   (guarantee unicode-char? char 'char-downcase)
-  (integer->char (ucd-slc-value (char->integer char))))
+  (%make-char (ucd-slc-value (char-code char))
+             (char-bits char)))
 
 (define (char-foldcase char)
   (guarantee unicode-char? char 'char-foldcase)
-  (integer->char (ucd-scf-value (char->integer char))))
+  (%make-char (ucd-scf-value (char-code char))
+             (char-bits char)))
 
 (define (char-upcase char)
   (guarantee unicode-char? char 'char-upcase)
-  (integer->char (ucd-suc-value (char->integer char))))
+  (%make-char (ucd-suc-value (char-code char))
+             (char-bits char)))
 \f
 (define-deferred 0-code (char->integer #\0))
 ;; Next two codes are offset by 10 to speed up CHAR->DIGIT.