X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-char.lisp;h=7f963b870ece52d75750243e30a98d3f8a6be7f7;hb=279283bc1724b60ef9ebbf31ab4837061989be18;hp=18ea349e0cec8507567c4e469ebfe95111361aac;hpb=8f41e246101ca3906d6c77da51c9de5601777b28;p=sbcl.git diff --git a/src/code/target-char.lisp b/src/code/target-char.lisp index 18ea349..7f963b8 100644 --- a/src/code/target-char.lisp +++ b/src/code/target-char.lisp @@ -271,20 +271,21 @@ (let ((encoding (huffman-encode (string-upcase name) *unicode-character-name-huffman-tree*))) (when encoding - (let ((char-code - (car (binary-search encoding - (cdr *unicode-character-name-database*) - :key #'cdr))) - (name-length (length name))) + (let* ((char-code + (car (binary-search encoding + (cdr *unicode-character-name-database*) + :key #'cdr))) + (name-string (string name)) + (name-length (length name-string))) (cond (char-code (code-char char-code)) ((and (or (= name-length 9) (= name-length 5)) - (char-equal (char name 0) #\U) + (char-equal (char name-string 0) #\U) (loop for i from 1 below name-length - always (digit-char-p (char name i) 16))) - (code-char (parse-integer name :start 1 :radix 16))) + always (digit-char-p (char name-string i) 16))) + (code-char (parse-integer name-string :start 1 :radix 16))) (t nil)))))))