Re: Alexandre Julliard : Take advantage of the __EXCEPT_PAGE_FAULT macro.
Alexandre Julliard wrote:
Module: wine Branch: refs/heads/master Commit: ae964ac801b3077f5361559abd6645d21fc35d1f URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=ae964ac801b3077f5361559a...
Author: Alexandre Julliard <julliard(a)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
Robert Shearman <rob(a)codeweavers.com> writes:
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.
That doesn't sound right, we should have cases for exceptions that we want to handle, not catching all of them. What sort of exceptions do you expect to get here? -- Alexandre Julliard julliard(a)winehq.org
Alexandre Julliard wrote:
Robert Shearman <rob(a)codeweavers.com> writes:
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.
That doesn't sound right, we should have cases for exceptions that we want to handle, not catching all of them. What sort of exceptions do you expect to get here?
E_NOINTERFACE, RPC_E_DISCONNECTED, RPC_X_NULL_REF_POINTER, etc. I believe native also catches all but a few exceptions here, but I'll test this hypothesis. In the mean time, can you revert the patch? I think that it will have broken anything that uses MIDL generated proxies. -- Rob Shearman
participants (2)
-
Alexandre Julliard -
Robert Shearman