include: Add support for executing finally code for exceptions without using a separate function.

Robert Shearman rob at
Sun Feb 17 12:15:52 CST 2008

A __FINALLY block is similar to an __EXCEPT block except that it needs 
to execute when the code in the __TRY block doesn't and it needs to 
continue unwinding to find an exception handler.

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.
  dlls/ntdll/exception.c   |    3 +-
  include/wine/exception.h |   56 
  2 files changed, 38 insertions(+), 21 deletions(-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 6ad6d4eeae1ec5496f6de3c83adb894c253ff46b.diff
Type: text/x-patch
Size: 3880 bytes
Desc: not available
Url : 

More information about the wine-patches mailing list