X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcondition.lisp;h=a44131081a6d1e6712f67f4dd4bcd5827626b041;hb=4f7e45c9c4d2c74a551f77e6fbe94527d6bc4864;hp=a62586a19598c2d7bd11c306a08f77ced71ae4ff;hpb=26341a4b638f5480993e9715bfb637e560592819;p=sbcl.git diff --git a/src/code/condition.lisp b/src/code/condition.lisp index a62586a..a441310 100644 --- a/src/code/condition.lisp +++ b/src/code/condition.lisp @@ -682,6 +682,17 @@ (let (lineno colno) (when (and pos (< pos sb!xc:array-dimension-limit) + ;; KLUDGE: lseek() (which is what FILE-POSITION + ;; reduces to on file-streams) is undefined on + ;; "some devices", which in practice means that it + ;; can claim to succeed on /dev/stdin on Darwin + ;; and Solaris. This is obviously bad news, + ;; because the READ-SEQUENCE below will then + ;; block, not complete, and the report will never + ;; be printed. As a workaround, we exclude + ;; interactive streams from this attempt to report + ;; positions. -- CSR, 2003-08-21 + (not (interactive-stream-p error-stream)) (file-position error-stream :start)) (let ((string (make-string pos