X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fexternal-formats%2Fmb-util.lisp;h=9a82d45557a9a127cbf0f425a05be51c0731aa90;hb=b411b7d5ee00409d531a8b0b4fcfc4d1d3c5c1d9;hp=c76bc423fee6b0d736f03cf8d7b47d939efe222f;hpb=75476d1d19ac3d7239c8963a498c447a8368433d;p=sbcl.git diff --git a/src/code/external-formats/mb-util.lisp b/src/code/external-formats/mb-util.lisp index c76bc42..9a82d45 100644 --- a/src/code/external-formats/mb-util.lisp +++ b/src/code/external-formats/mb-util.lisp @@ -248,6 +248,12 @@ ;; for fd-stream.lisp (define-external-format/variable-width ,aliases t + ;; KLUDGE: it so happens that at present (2009-10-22) none of + ;; the external formats defined with + ;; define-multibyte-encoding can encode the unicode + ;; replacement character, so we hardcode the preferred + ;; replacement here. + #\? (mb-char-len (or (,ucs-to-mb (char-code byte)) -1)) (let ((mb (,ucs-to-mb bits))) (if (null mb) @@ -259,7 +265,7 @@ (3 (setf (sap-ref-8 sap tail) (ldb (byte 8 16) mb) (sap-ref-8 sap (1+ tail)) (ldb (byte 8 8) mb) (sap-ref-8 sap (+ 2 tail)) (ldb (byte 8 0) mb)))))) - (,mb-len byte) + (1 (,mb-len byte)) (let* ((mb (ecase size (1 byte) (2 (let ((byte2 (sap-ref-8 sap (1+ head))))