- 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:
dlichteblau
2005-04-06 19:23:53 +00:00
parent 99546f169e
commit 013867cf4e

View File

@ -828,14 +828,14 @@
(defstruct (internal-entdef
(:include entdef)
(:constructor make-internal-entdef (value))
(:conc-name #:ENTDEF-))
(:conc-name #:entdef-))
(value (error "missing argument") :type rod)
(expansion nil))
(defstruct (external-entdef
(:include entdef)
(:constructor make-external-entdef (extid ndata))
(:conc-name #:ENTDEF-))
(:conc-name #:entdef-))
(extid (error "missing argument") :type extid)
(ndata nil :type (or rod null)))
@ -875,8 +875,10 @@
(defun absolute-uri (sysid source-stream)
(let ((base-sysid (zstream-base-sysid source-stream)))
(assert (not (null base-sysid)))
(puri:merge-uris sysid base-sysid)))
;; XXX is the IF correct?
(if base-sysid
(puri:merge-uris sysid base-sysid)
sysid)))
(defstruct (extid (:constructor make-extid (public system)))
(public nil :type (or rod null))
@ -2537,6 +2539,12 @@
(defun p/document
(input handler
&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*
(make-context :handler handler
:entity-resolver entity-resolver