[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[no subject]



    Date: 20 JUN 1980 0413-EDT
    From: KMP at MIT-MC (Kent M. Pitman)
        Date: 20 June 1980 02:52-EDT
        From: Edward Barton <EB at MIT-AI>
        Subject: INHIBIT restoration bug
        To: BUG-LISP at MIT-AI
        Also happens when UNWIND-PROTECT is used instead of *CATCH.
    Well, UNWIND-PROTECT, in the case of normal return, UNWIND-PROTECT
    is supposed to ... ie, it works something like
        (DEFUN UNWIND-PROTECT FEXPR (BODY)
    	   (PROG1 (EVAL (CAR BODY))
    		  (LET ((+INTERNAL-WITHOUT-INTERRUPTS T)) ;Bind INHIBIT, etc
    		       (MAPC 'EVAL (CDR BODY)))))
    when no non-local returns happen ... does this account for your bug?
    If not, please give us an example of what you mean...
No, this doesn't account for the bug.  Example:

(setq tty-return '(lambda (x) (unwind-protect nil nil)(undefined-function)))
^Z $P

does a .VALUE after it is OUTSIDE the unwind-protect.

I hope someone can fix this; I took out all the CATCHes in my code and
it still happens sporadically.