diff --git a/XMLCONF b/XMLCONF index 84212c9..3b4976d 100644 --- a/XMLCONF +++ b/XMLCONF @@ -167,13 +167,7 @@ xmltest/not-wf/sa/166.xml [not validating:] not-wf [validating:] invalid xmltest/not-wf/sa/167.xml [not validating:] not-wf [validating:] invalid xmltest/not-wf/sa/168.xml [not validating:] not-wf [validating:] invalid xmltest/not-wf/sa/169.xml [not validating:] not-wf [validating:] invalid -xmltest/not-wf/sa/170.xml [not validating:] FAILED: - well-formedness violation not detected -[ - Four byte UTF-8 encodings can encode UCS-4 characters - which are beyond the range of legal XML characters - (and can't be expressed in Unicode surrogate pairs). - This document holds such a character. ] +xmltest/not-wf/sa/170.xml [not validating:] not-wf [validating:] invalid xmltest/not-wf/sa/171.xml [not validating:] FAILED: well-formedness violation not detected [ @@ -1862,4 +1856,4 @@ ibm/valid/P86/ibm86v01.xml [not validating:] input [validating:] input ibm/valid/P87/ibm87v01.xml [not validating:] input [validating:] input ibm/valid/P88/ibm88v01.xml [not validating:] input [validating:] input ibm/valid/P89/ibm89v01.xml [not validating:] input [validating:] input -15/1786 tests failed; 376 tests were skipped \ No newline at end of file +14/1786 tests failed; 376 tests were skipped \ No newline at end of file diff --git a/runes/encodings.lisp b/runes/encodings.lisp index 04ddd93..bdd8e99 100644 --- a/runes/encodings.lisp +++ b/runes/encodings.lisp @@ -160,8 +160,10 @@ `((lambda (x) (when (or (<= #xD800 x #xDBFF) (<= #xDC00 x #xDFFF)) - (xerror "surrogate encoded in UTF-8: #x~x." x)) - (cond ((%> x #xFFFF) + (xerror "surrogate encoded in UTF-8: #x~X." x)) + (cond ((%> x #x10FFFF) + (xerror "not a valid code point: #x~X" x)) + ((%> x #xFFFF) (setf (aref out (%+ 0 wptr)) (%+ #xD7C0 (ash x -10)) (aref out (%+ 1 wptr)) (%ior #xDC00 (%and x #x3FF))) (setf wptr (%+ wptr 2)))