(defun sharp-left-paren (stream ignore length)
(declare (ignore ignore) (special *backquote-count*))
(let* ((list (read-list stream nil))
- (listlength (length list)))
+ (listlength (handler-case (length list)
+ (type-error
+ (error)
+ (declare (ignore error))
+ (%reader-error stream "improper list in #(): ~S"
+ list)))))
(declare (list list)
(fixnum listlength))
(cond (*read-suppress* nil)
(defun sharp-B (stream sub-char numarg)
(ignore-numarg sub-char numarg)
- (sharp-r stream sub-char 2))
+ (sharp-R stream sub-char 2))
(defun sharp-C (stream sub-char numarg)
(ignore-numarg sub-char numarg)
;; The next thing had better be a list of two numbers.
(let ((cnum (read stream t nil t)))
- (when *read-suppress* (return-from sharp-c nil))
+ (when *read-suppress* (return-from sharp-C nil))
(if (and (listp cnum) (= (length cnum) 2))
(complex (car cnum) (cadr cnum))
(%reader-error stream "illegal complex number format: #C~S" cnum))))
(defun sharp-O (stream sub-char numarg)
(ignore-numarg sub-char numarg)
- (sharp-r stream sub-char 8))
+ (sharp-R stream sub-char 8))
(defun sharp-R (stream sub-char radix)
(cond (*read-suppress*
(defun sharp-X (stream sub-char numarg)
(ignore-numarg sub-char numarg)
- (sharp-r stream sub-char 16))
+ (sharp-R stream sub-char 16))
\f
;;;; reading circular data: the #= and ## readmacros
(set-dispatch-macro-character #\# #\C #'sharp-C)
(set-dispatch-macro-character #\# #\c #'sharp-C)
(set-dispatch-macro-character #\# #\| #'sharp-vertical-bar)
- (set-dispatch-macro-character #\# #\p #'sharp-p)
- (set-dispatch-macro-character #\# #\P #'sharp-p)
+ (set-dispatch-macro-character #\# #\p #'sharp-P)
+ (set-dispatch-macro-character #\# #\P #'sharp-P)
(set-dispatch-macro-character #\# #\) #'sharp-illegal)
(set-dispatch-macro-character #\# #\< #'sharp-illegal)
(set-dispatch-macro-character #\# #\Space #'sharp-illegal)