mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 09:13:01 +00:00
[0.4.14][WIN32SS] Mask WndProc exceptions to hide all tickets linked to CORE-11915
my testcase: this allows opening an exe/dll with MsDepends (CORE-12052)
Unfortunately still necessary, luckily still effective
and also reliably hides a lot of other crashes due to uncaught exceptions
like done in all earlier releases since 0.4.3
cherry picked from commit bca25b10b4
This commit is contained in:
parent
5d7dbc8a4e
commit
0fbebb8f73
1 changed files with 4 additions and 24 deletions
|
@ -1487,20 +1487,15 @@ IntCallWindowProcW(BOOL IsAnsiProc,
|
||||||
|
|
||||||
if (PreResult) goto Exit;
|
if (PreResult) goto Exit;
|
||||||
|
|
||||||
if (!Dialog)
|
|
||||||
Result = CALL_EXTERN_WNDPROC(WndProc, AnsiMsg.hwnd, AnsiMsg.message, AnsiMsg.wParam, AnsiMsg.lParam);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
Result = CALL_EXTERN_WNDPROC(WndProc, AnsiMsg.hwnd, AnsiMsg.message, AnsiMsg.wParam, AnsiMsg.lParam);
|
Result = CALL_EXTERN_WNDPROC(WndProc, AnsiMsg.hwnd, AnsiMsg.message, AnsiMsg.wParam, AnsiMsg.lParam);
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
ERR("Exception Dialog Ansi %p Msg %d pti %p Wndpti %p\n",WndProc,Msg,GetW32ThreadInfo(),pWnd->head.pti);
|
ERR("Exception when calling Ansi WndProc %p Msg %d pti %p Wndpti %p\n",WndProc,Msg,GetW32ThreadInfo(),pWnd->head.pti);
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
}
|
|
||||||
|
|
||||||
if (Hook && (MsgOverride || DlgOverride))
|
if (Hook && (MsgOverride || DlgOverride))
|
||||||
{
|
{
|
||||||
|
@ -1543,20 +1538,15 @@ IntCallWindowProcW(BOOL IsAnsiProc,
|
||||||
|
|
||||||
if (PreResult) goto Exit;
|
if (PreResult) goto Exit;
|
||||||
|
|
||||||
if (!Dialog)
|
|
||||||
Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam);
|
Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam);
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
ERR("Exception Dialog unicode %p Msg %d pti %p Wndpti %p\n",WndProc, Msg,GetW32ThreadInfo(),pWnd->head.pti);
|
ERR("Exception when calling unicode WndProc %p Msg %d pti %p Wndpti %p\n",WndProc, Msg,GetW32ThreadInfo(),pWnd->head.pti);
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
}
|
|
||||||
|
|
||||||
if (Hook && (MsgOverride || DlgOverride))
|
if (Hook && (MsgOverride || DlgOverride))
|
||||||
{
|
{
|
||||||
|
@ -1637,20 +1627,15 @@ IntCallWindowProcA(BOOL IsAnsiProc,
|
||||||
|
|
||||||
if (PreResult) goto Exit;
|
if (PreResult) goto Exit;
|
||||||
|
|
||||||
if (!Dialog)
|
|
||||||
Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam);
|
Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam);
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
ERR("Exception Dialog Ansi %p Msg %d pti %p Wndpti %p\n",WndProc,Msg,GetW32ThreadInfo(),pWnd->head.pti);
|
ERR("Exception when calling Ansi WndProc %p Msg %d pti %p Wndpti %p\n",WndProc,Msg,GetW32ThreadInfo(),pWnd->head.pti);
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
}
|
|
||||||
|
|
||||||
if (Hook && (MsgOverride || DlgOverride))
|
if (Hook && (MsgOverride || DlgOverride))
|
||||||
{
|
{
|
||||||
|
@ -1700,20 +1685,15 @@ IntCallWindowProcA(BOOL IsAnsiProc,
|
||||||
|
|
||||||
if (PreResult) goto Exit;
|
if (PreResult) goto Exit;
|
||||||
|
|
||||||
if (!Dialog)
|
|
||||||
Result = CALL_EXTERN_WNDPROC(WndProc, UnicodeMsg.hwnd, UnicodeMsg.message, UnicodeMsg.wParam, UnicodeMsg.lParam);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
Result = CALL_EXTERN_WNDPROC(WndProc, UnicodeMsg.hwnd, UnicodeMsg.message, UnicodeMsg.wParam, UnicodeMsg.lParam);
|
Result = CALL_EXTERN_WNDPROC(WndProc, UnicodeMsg.hwnd, UnicodeMsg.message, UnicodeMsg.wParam, UnicodeMsg.lParam);
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
ERR("Exception Dialog unicode %p Msg %d pti %p Wndpti %p\n",WndProc, Msg,GetW32ThreadInfo(),pWnd->head.pti);
|
ERR("Exception when calling unicode WndProc %p Msg %d pti %p Wndpti %p\n",WndProc, Msg,GetW32ThreadInfo(),pWnd->head.pti);
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
}
|
|
||||||
|
|
||||||
if (Hook && (MsgOverride || DlgOverride))
|
if (Hook && (MsgOverride || DlgOverride))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue