- in p/document, check types of user-supplied arguments for better error
messages - documents parsed from octet vectors don't have a base sysid, so don't try to merge it into sysids referenced in such documents
This commit is contained in:
@ -828,14 +828,14 @@
|
|||||||
(defstruct (internal-entdef
|
(defstruct (internal-entdef
|
||||||
(:include entdef)
|
(:include entdef)
|
||||||
(:constructor make-internal-entdef (value))
|
(:constructor make-internal-entdef (value))
|
||||||
(:conc-name #:ENTDEF-))
|
(:conc-name #:entdef-))
|
||||||
(value (error "missing argument") :type rod)
|
(value (error "missing argument") :type rod)
|
||||||
(expansion nil))
|
(expansion nil))
|
||||||
|
|
||||||
(defstruct (external-entdef
|
(defstruct (external-entdef
|
||||||
(:include entdef)
|
(:include entdef)
|
||||||
(:constructor make-external-entdef (extid ndata))
|
(:constructor make-external-entdef (extid ndata))
|
||||||
(:conc-name #:ENTDEF-))
|
(:conc-name #:entdef-))
|
||||||
(extid (error "missing argument") :type extid)
|
(extid (error "missing argument") :type extid)
|
||||||
(ndata nil :type (or rod null)))
|
(ndata nil :type (or rod null)))
|
||||||
|
|
||||||
@ -875,8 +875,10 @@
|
|||||||
|
|
||||||
(defun absolute-uri (sysid source-stream)
|
(defun absolute-uri (sysid source-stream)
|
||||||
(let ((base-sysid (zstream-base-sysid source-stream)))
|
(let ((base-sysid (zstream-base-sysid source-stream)))
|
||||||
(assert (not (null base-sysid)))
|
;; XXX is the IF correct?
|
||||||
(puri:merge-uris sysid base-sysid)))
|
(if base-sysid
|
||||||
|
(puri:merge-uris sysid base-sysid)
|
||||||
|
sysid)))
|
||||||
|
|
||||||
(defstruct (extid (:constructor make-extid (public system)))
|
(defstruct (extid (:constructor make-extid (public system)))
|
||||||
(public nil :type (or rod null))
|
(public nil :type (or rod null))
|
||||||
@ -2537,6 +2539,12 @@
|
|||||||
(defun p/document
|
(defun p/document
|
||||||
(input handler
|
(input handler
|
||||||
&key validate dtd root entity-resolver disallow-internal-subset)
|
&key validate dtd root entity-resolver disallow-internal-subset)
|
||||||
|
;; check types of user-supplied arguments for better error messages:
|
||||||
|
(check-type validate boolean)
|
||||||
|
(check-type dtd (or null extid))
|
||||||
|
(check-type root (or null rod))
|
||||||
|
(check-type entity-resolver (or null function symbol))
|
||||||
|
(check-type disallow-internal-subset boolean)
|
||||||
(let ((*ctx*
|
(let ((*ctx*
|
||||||
(make-context :handler handler
|
(make-context :handler handler
|
||||||
:entity-resolver entity-resolver
|
:entity-resolver entity-resolver
|
||||||
|
|||||||
Reference in New Issue
Block a user