[cxml-cvs] CVS update: cxml/runes/encodings.lisp
David Lichteblau
dlichteblau at common-lisp.net
Sun Nov 27 18:20:12 UTC 2005
Update of /project/cxml/cvsroot/cxml/runes
In directory common-lisp.net:/tmp/cvs-serv8375/runes
Modified Files:
encodings.lisp
Log Message:
Hmm. Auf U+ffff und dergleichen wurde durch data-rune-p geprueft,
das aber eben nicht ueberall benutzt wurde. Ich habe die Pruefung
jetzt mal direkt im Decoding eingebaut.
-xmltest/not-wf/sa/171.xml [not validating:] FAILED:
- well-formedness violation not detected
-[
- Character FFFF is not legal anywhere in an XML document. ]
Date: Sun Nov 27 19:20:10 2005
Author: dlichteblau
Index: cxml/runes/encodings.lisp
diff -u cxml/runes/encodings.lisp:1.3 cxml/runes/encodings.lisp:1.4
--- cxml/runes/encodings.lisp:1.3 Sun Nov 27 18:34:23 2005
+++ cxml/runes/encodings.lisp Sun Nov 27 19:20:10 2005
@@ -123,7 +123,10 @@
;; FIXME: Wenn wir hier ein Surrogate sehen, muessen wir das naechste
;; Zeichen abwarten und nachgucken, dass nicht etwa die andere
;; Haelfte fehlt!
- (setf (aref out wptr) (logior (ash hi 8) lo))
+ (let ((x (logior (ash hi 8) lo)))
+ (when (or (eql x #xFFFE) (eql x #/U+FFFF))
+ (xerror "not a valid code point: #x~X" x))
+ (setf (aref out wptr) x))
(setf wptr (%+ 1 wptr))))
(values wptr rptr)))
@@ -143,7 +146,10 @@
;; FIXME: Wenn wir hier ein Surrogate sehen, muessen wir das naechste
;; Zeichen abwarten und nachgucken, dass nicht etwa die andere
;; Haelfte fehlt!
- (setf (aref out wptr) (logior (ash hi 8) lo))
+ (let ((x (logior (ash hi 8) lo)))
+ (when (or (eql x #xFFFE) (eql x #/U+FFFF))
+ (xerror "not a valid code point: #x~X" x))
+ (setf (aref out wptr) x))
(setf wptr (%+ 1 wptr))))
(values wptr rptr)))
@@ -161,7 +167,9 @@
(when (or (<= #xD800 x #xDBFF)
(<= #xDC00 x #xDFFF))
(xerror "surrogate encoded in UTF-8: #x~X." x))
- (cond ((%> x #x10FFFF)
+ (cond ((or (%> x #x10FFFF)
+ (eql x #xFFFE)
+ (eql x #/U+FFFF))
(xerror "not a valid code point: #x~X" x))
((%> x #xFFFF)
(setf (aref out (%+ 0 wptr)) (%+ #xD7C0 (ash x -10))
More information about the Cxml-cvs
mailing list