Author: akhaldi
Date: Sat Oct 29 17:57:53 2016
New Revision: 73063

URL: http://svn.reactos.org/svn/reactos?rev=73063&view=rev
Log:
[WIN32SS/USER32] Mask exceptions from WndProc, essentially reverting r72495. 
CORE-11915

Removed:
    
branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/wndproc_fixup.S
Modified:
    branches/ros-branch-0_4_3/reactos/win32ss/user/user32/CMakeLists.txt
    branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/message.c

Modified: branches/ros-branch-0_4_3/reactos/win32ss/user/user32/CMakeLists.txt
URL: 
http://svn.reactos.org/svn/reactos/branches/ros-branch-0_4_3/reactos/win32ss/user/user32/CMakeLists.txt?rev=73063&r1=73062&r2=73063&view=diff
==============================================================================
--- branches/ros-branch-0_4_3/reactos/win32ss/user/user32/CMakeLists.txt        
[iso-8859-1] (original)
+++ branches/ros-branch-0_4_3/reactos/win32ss/user/user32/CMakeLists.txt        
[iso-8859-1] Sat Oct 29 17:57:53 2016
@@ -64,16 +64,8 @@
     ${CMAKE_CURRENT_BINARY_DIR}/user32_stubs.c
     include/user32.h)
 
-if(ARCH STREQUAL "i386")
-    list(APPEND ASM_SOURCE
-        windows/wndproc_fixup.S)
-endif()
-
-add_asm_files(user32_asm ${ASM_SOURCE})
-
 add_library(user32 SHARED
     ${SOURCE}
-    ${user32_asm}
     user32.rc
     ${CMAKE_CURRENT_BINARY_DIR}/user32.def)
 

Modified: 
branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/message.c
URL: 
http://svn.reactos.org/svn/reactos/branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/message.c?rev=73063&r1=73062&r2=73063&view=diff
==============================================================================
--- branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/message.c     
[iso-8859-1] (original)
+++ branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/message.c     
[iso-8859-1] Sat Oct 29 17:57:53 2016
@@ -13,21 +13,6 @@
 #include <wine/debug.h>
 WINE_DEFAULT_DEBUG_CHANNEL(user32);
 
-
-#ifdef __i386__
-/* For bad applications which provide bad (non stdcall) WndProc */
-extern
-LRESULT
-__cdecl
-CALL_EXTERN_WNDPROC(
-     WNDPROC WndProc,
-     HWND hWnd,
-     UINT Msg,
-     WPARAM wParam,
-     LPARAM lParam);
-#else
-#  define CALL_EXTERN_WNDPROC(proc, h, m, w, l) proc(h, m, w, l)
-#endif
 
 /* From wine: */
 /* flag for messages that contain pointers */
@@ -1463,7 +1448,15 @@
 
       if (PreResult) goto Exit;
 
-      Result = CALL_EXTERN_WNDPROC(WndProc, AnsiMsg.hwnd, AnsiMsg.message, 
AnsiMsg.wParam, AnsiMsg.lParam);
+      _SEH2_TRY // wine does this.
+      {
+         Result = WndProc(AnsiMsg.hwnd, AnsiMsg.message, AnsiMsg.wParam, 
AnsiMsg.lParam);
+      }
+      _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+      {
+         ERR("Exception when calling Ansi WndProc %p Msg %d pti %p Wndpti 
%p\n",WndProc,Msg,GetW32ThreadInfo(),pWnd->head.pti);
+      }
+      _SEH2_END;
 
       if (Hook && MsgOverride)
       {
@@ -1504,7 +1497,15 @@
 
       if (PreResult) goto Exit;
 
-      Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam);
+      _SEH2_TRY
+      {
+         Result = WndProc(hWnd, Msg, wParam, lParam);
+      }
+      _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+      {
+         ERR("Exception when calling unicode WndProc %p Msg %d pti %p Wndpti 
%p\n",WndProc, Msg,GetW32ThreadInfo(),pWnd->head.pti);
+      }
+      _SEH2_END;
 
       if (Hook && MsgOverride)
       {
@@ -1584,7 +1585,15 @@
 
       if (PreResult) goto Exit;
 
-      Result = CALL_EXTERN_WNDPROC(WndProc, hWnd, Msg, wParam, lParam);
+      _SEH2_TRY
+      {
+         Result = WndProc(hWnd, Msg, wParam, lParam);
+      }
+      _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+      {
+         ERR("Exception when calling Ansi WndProc %p Msg %d pti %p Wndpti 
%p\n",WndProc,Msg,GetW32ThreadInfo(),pWnd->head.pti);
+      }
+      _SEH2_END;
 
       if (Hook && MsgOverride)
       {
@@ -1632,7 +1641,16 @@
 
       if (PreResult) goto Exit;
 
-      Result = CALL_EXTERN_WNDPROC(WndProc, UnicodeMsg.hwnd, 
UnicodeMsg.message, UnicodeMsg.wParam, UnicodeMsg.lParam);
+      _SEH2_TRY
+      {
+         Result = WndProc(UnicodeMsg.hwnd, UnicodeMsg.message,
+                          UnicodeMsg.wParam, UnicodeMsg.lParam);
+      }
+      _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+      {
+         ERR("Exception when calling unicode WndProc %p Msg %d pti %p Wndpti 
%p\n",WndProc, Msg,GetW32ThreadInfo(),pWnd->head.pti);
+      }
+      _SEH2_END;
 
       if (Hook && MsgOverride)
       {

Removed: 
branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/wndproc_fixup.S
URL: 
http://svn.reactos.org/svn/reactos/branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/wndproc_fixup.S?rev=73062
==============================================================================
--- 
branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/wndproc_fixup.S   
    [iso-8859-1] (original)
+++ 
branches/ros-branch-0_4_3/reactos/win32ss/user/user32/windows/wndproc_fixup.S   
    (removed)
@@ -1,58 +0,0 @@
-/*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS user32.dll
- * FILE:            win32ss/user/user32/windows/wndproc_fixup.S
- * PURPOSE:         Messages
- * PROGRAMMER:      Jérôme Gardou [email protected]
- * LICENCE :        LGPL, copyright Alexandre Julliard
- */
-
-#include <asm.inc>
-#include <ks386.inc>
-
-/* Some applications provide invalid callbacks which don't follow the stdcall 
convention */
-
-.code
-
-/* 
- * LRESULT
- * __cdecl 
- * CALL_EXTERN_WNDPROC(
- *     WNDPROC WndProc,
- *     HWND hWnd,
- *     UINT Msg,
- *     WPARAM wParam,
- *     LPARAM lParam);
- */
-PUBLIC _CALL_EXTERN_WNDPROC
-FUNC _CALL_EXTERN_WNDPROC
-    FPO 0, 0, 0, 0, 0, FRAME_FPO
-
-    push ebp
-    mov ebp, esp
-
-    push edi
-    push esi
-    push ebp
-
-    sub esp, 12
-
-    push dword ptr [ebp + 24]
-    push dword ptr [ebp + 20]
-    push dword ptr [ebp + 16]
-    push dword ptr [ebp + 12]
-    mov eax, dword ptr [ebp + 8]
-
-    call eax
-
-    lea esp, dword ptr [ebp - 12]
-    pop ebx
-    pop esi
-    pop edi
-
-    leave
-    ret
-
-ENDFUNC
-
-END


Reply via email to