Alexandre Julliard wrote: > Robert Shearman <[EMAIL PROTECTED]> writes: > > >> The first goal is accomplished by changing the previous two-state >> variable of __first into a three-state variable where the third state >> is the state in which the finally code is executed in the normal >> case. The second goal is accomplished by calling sigsetjmp in >> __wine_finally_handler to give the finally code a place to jump back >> to after it has finished executing. >> > > That can't work, once you longjmp into the finally block you can't > longjmp back, since you are no longer inside the function that did the > setjmp.
Ah, yes. I thought there might be some caveat like that on the use of longjmp, but I couldn't break it with any of the tests I did. I can see why it wouldn't work on all platforms or in all circumstances. -- Rob Shearman