Chong Yidong <[EMAIL PROTECTED]> writes:
> M-: (setq foo 1) RET
> M-: (let ((foo 2)) (error "foo")) RET
> M-: foo   ---> 2
>
> After an error, the `let' form gets exited too, so the global variable
> isn't rebound to its original value.

If that's really happening, it's a very serious bug in `let'.
_Huge_ amounts of code depends on let dealing with errors correctly...

However when I tried to reproduce it using your example above, I couldn't:

   (setq foo 1)
   1

   (let ((foo 2)) (error "foo"))
   [*get error backtrace, quit from backtrace*]

   foo
   1

[I tried using both the *scratch* buffer and M-:]

Are you sure your final test evaluation of `foo" above isn't done while
the debugger's recursive edit (with backtrace) is still active?  While
in that recursive edit, you're still actually "inside" the let context.

> One way to fix this is to replace every such construct with
...
> OK?

Er, no...


-Miles

-- 
`Suppose Korea goes to the World Cup final against Japan and wins,' Moon said.
`All the past could be forgiven.'   [NYT]


_______________________________________________
emacs-pretest-bug mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug

Reply via email to