-
(Alan Ruttenberg) Signaling an simple error would signal another error if the message happened to have a ~ in it, since in simple cases there are no format args, but format is called with the message string. We fix this by changing all cases in the source where there were calls to setFormatControl(x) are followed by setFormatArguments(NIL). In such cases we changed setFormatControl(x) -> setFormatControl(x.replaceAll("~","~~")), which is the CL:FORMAT recipe for escaping a #\~ character. To replicate this error, place the following in a file <file:~/work/abcl/double-error.lisp>. (defun foo (x) (funcall x)) then CL-USER> (compile-file "~/work/abcl/double-error") ; Compiling /Users/evenson/work/abcl/double-error.lisp ... ; (DEFUN FOO ...) ; Wrote /Users/evenson/work/abcl/double-error.abcl (0.015 seconds) #P"/Users/evenson/work/abcl/double-error.abcl" NIL NIL CL-USER> (foo '~) gives Error (FORMAT-ERROR) during printing: #<PROGRAM-ERROR {264F63C5}> [Condition of type PROGRAM-ERROR] Merges <https://github.com/armedbear/abcl/pull/41>.
a99015df