How do I write an exception filter?

Ove Kaaven ovek at arcticnet.no
Thu Jul 10 14:55:56 CDT 2008


Stefan Kuhr wrote:
> In include/wine/exception.h, a comment from AJ says that
> "__EXCEPT(filter_func,param)" is the proper way to do it but "param"
> is not explained at all

I think that comment must be very old, the macros don't implement any 
"param".

> So, how do I do these things in WINE properly?

In general, within Wine code, it's impossible. In standard C, a function 
cannot reference a local variable of another function. It might be 
possible with some trickery (e.g. declaring explicit register/volatile 
variables), or with special compiler support (MSVC obviously has special 
support for it, and perhaps gcc nested functions or something could be 
used).

For Wine, you'd have to come up with something else. Whatever the filter 
function needs should be available in some other form than a stack 
variable, like maybe some global or thread-local (TLS) variable, or 
perhaps from some function call.

Also perhaps consider whether you need a filter function this complex at 
all...




More information about the wine-devel mailing list