Don't use GetExceptionCode and GetExceptionInformation in exception filter functions.

Robert Shearman rob at
Thu Feb 14 08:40:51 CST 2008

When using native compiler exceptions, it isn't valid to use 
GetExceptionCode and GetExceptionInformation anywhere other than in the 
filter or handler blocks since it would be very hard for the compiler to 
work out where to retrieve the exception information from on the stack.

Therefore, introduce two new functions, WineFilterGetExceptionCode and 
WineFilterGetExceptionInformation for this purpose and rename the __eptr 
parameter of the filter function so GetExceptionCode and 
GetExceptionInformation can't be used here.

Also give the same treatment to the AbnormalTermination finally helper, 
although it isn't actually used anywhere at the moment.

Move WINE_EXCEPTION_FILTER and WINE_FINALLY_FUNC outside of the !defined 
USE_COMPILER_EXCEPTIONS block since they are used by general Wine code.
  dlls/kernel32/console.c  |    2 +-
  dlls/rpcrt4/cstub.c      |    2 +-
  dlls/rpcrt4/rpc_server.c |    2 +-
  dlls/winedos/dosvm.c     |    4 ++--
  dlls/winedos/int31.c     |    4 ++--
  include/wine/exception.h |   10 +++++++---
  programs/explorer/hal.c  |    2 +-
  programs/winedbg/dbg.y   |    4 ++--
  8 files changed, 17 insertions(+), 13 deletions(-)

Alternatively, we could get rid of the WINE_EXCEPTION_FILTER and 
WINE_FINALLY_FUNC functions and make users of __EXCEPT and __FINALLY 
declare the functions themselves and access the exception data directly 
without use of macros.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 357d63cbfe8494e994f5f332fc716892cf05567f.diff
Type: text/x-patch
Size: 5350 bytes
Desc: not available
Url : 

More information about the wine-patches mailing list