1.0.4.11: trivial hash-table cleanup / optimization
[sbcl.git] / src / code / target-char.lisp
index 18ea349..7f963b8 100644 (file)
       (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)))))))
 \f