[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: KMP at MIT-MC
- From: Edward Barton <EB at MIT-AI>
- Date: Fri, 20 Jun 80 08:16:00 GMT
- Cc: BUG-LISP at MIT-AI
- Original-date: 20 June 1980 04:16-EDT
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)))
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.