X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-format.lisp;h=f8ab91fdf967e361e6e39a5b742cad02557ce4d3;hb=5f0bd05a15aaf93f46baf9b8aa3e9b0bfbca26ab;hp=7ed2b55a1ff25bc46b327280584144e6de797a81;hpb=b894cb41d869bda6ba0c54a491becc7bb58375c1;p=sbcl.git diff --git a/src/code/target-format.lisp b/src/code/target-format.lisp index 7ed2b55..f8ab91f 100644 --- a/src/code/target-format.lisp +++ b/src/code/target-format.lisp @@ -234,11 +234,17 @@ (def-format-interpreter #\C (colonp atsignp params) (interpret-bind-defaults () params - (if colonp - (format-print-named-character (next-arg) stream) - (if atsignp - (prin1 (next-arg) stream) - (write-char (next-arg) stream))))) + (let ((arg (next-arg))) + (unless (typep arg 'character) + (error 'format-error + :complaint "~s is not of type CHARACTER." + :args (list arg))) + (cond (colonp + (format-print-named-character arg stream)) + (atsignp + (prin1 arg stream)) + (t + (write-char arg stream)))))) ;;; "printing" as defined in the ANSI CL glossary, which is normative. (defun char-printing-p (char) @@ -326,6 +332,11 @@ (commainterval 3)) params (let ((arg (next-arg))) + (unless (or base + (integerp arg)) + (error 'format-error + :complaint "~s is not of type INTEGER." + :args (list arg))) (if base (format-print-integer stream arg colonp atsignp base mincol padchar commachar commainterval)