Alexandre Julliard : Take advantage of the __EXCEPT_PAGE_FAULT macro.

Robert Shearman rob at codeweavers.com
Sun Dec 18 05:50:08 CST 2005


Alexandre Julliard wrote:

>Module: wine
>Branch: refs/heads/master
>Commit: ae964ac801b3077f5361559abd6645d21fc35d1f
>URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=ae964ac801b3077f5361559abd6645d21fc35d1f
>
>Author: Alexandre Julliard <julliard at winehq.org>
>Date:   Fri Dec 16 17:17:57 2005 +0100
>
>Take advantage of the __EXCEPT_PAGE_FAULT macro.
>  
>

This change is wrong:

> --- dlls/ole32/rpc.c
> +++ dlls/ole32/rpc.c
> @@ -110,13 +110,6 @@ struct dispatch_params
> HRESULT hr; /* hresult (out) */
> };
> -static WINE_EXCEPTION_FILTER(ole_filter)
> -{
> - if (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
> - return EXCEPTION_CONTINUE_SEARCH;
> - return EXCEPTION_EXECUTE_HANDLER;
> -}
> -
> static HRESULT WINAPI 
> RpcChannelBuffer_QueryInterface(LPRPCCHANNELBUFFER iface, REFIID riid, 
> LPVOID *ppv)
> {
> *ppv = NULL;
> @@ -453,7 +446,7 @@ void RPC_ExecuteCall(struct dispatch_par
> {
> params->hr = IRpcStubBuffer_Invoke(params->stub, params->msg, 
> params->chan);
> }
> - __EXCEPT(ole_filter)
> + __EXCEPT_PAGE_FAULT
> {
> params->hr = GetExceptionCode();
> }


The idea is that the ole_filter will catch all exceptions other than 
page faults so that we don't hide obvious programmer errors. However, 
there obviously should be cases for some other exceptions that we don't 
want to handle.

-- 
Rob Shearman




More information about the wine-devel mailing list