Piotr Caban : msvcr90: Don't forward set_se_translator to msvcrt.

Alexandre Julliard julliard at winehq.org
Wed Mar 27 15:40:07 CDT 2013


Module: wine
Branch: master
Commit: 39fa807b5374b56704095993561caa7d34d86721
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=39fa807b5374b56704095993561caa7d34d86721

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Wed Mar 27 16:15:01 2013 +0100

msvcr90: Don't forward set_se_translator to msvcrt.

---

 dlls/msvcr90/msvcr90.c    |   17 +++++++++++++++++
 dlls/msvcr90/msvcr90.spec |    4 ++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/dlls/msvcr90/msvcr90.c b/dlls/msvcr90/msvcr90.c
index 9b3d8c7..dc97160 100644
--- a/dlls/msvcr90/msvcr90.c
+++ b/dlls/msvcr90/msvcr90.c
@@ -24,8 +24,11 @@
 #include "windef.h"
 #include "winbase.h"
 
+typedef void (__cdecl *MSVCRT__se_translator_function)(unsigned int code, struct _EXCEPTION_POINTERS *info);
+
 static void* (__cdecl *MSVCRT_operator_new)(size_t);
 static void (__cdecl *MSVCRT_operator_delete)(void*);
+static MSVCRT__se_translator_function (__cdecl *MSVCRT__set_se_translator)(MSVCRT__se_translator_function);
 
 static void init_cxx_funcs(void)
 {
@@ -35,11 +38,15 @@ static void init_cxx_funcs(void)
     {
         MSVCRT_operator_new = (void*)GetProcAddress(hmod, "??2 at YAPEAX_K@Z");
         MSVCRT_operator_delete = (void*)GetProcAddress(hmod, "??3 at YAXPEAX@Z");
+        MSVCRT__set_se_translator = (void*)GetProcAddress(hmod,
+                "?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z");
     }
     else
     {
         MSVCRT_operator_new = (void*)GetProcAddress(hmod, "??2 at YAPAXI@Z");
         MSVCRT_operator_delete = (void*)GetProcAddress(hmod, "??3 at YAXPAX@Z");
+        MSVCRT__set_se_translator = (void*)GetProcAddress(hmod,
+                "?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z");
     }
 }
 
@@ -99,3 +106,13 @@ void CDECL MSVCR90_operator_delete(void *ptr)
 {
     return MSVCRT_operator_delete(ptr);
 }
+
+/*********************************************************************
+ *  ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z (MSVCR90.@)
+ *
+ * Naver LINE expects that this function is implemented inside msvcr90
+ */
+MSVCRT__se_translator_function CDECL MSVCR90__set_se_translator(MSVCRT__se_translator_function func)
+{
+    return MSVCRT__set_se_translator(func);
+}
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index c555c6e..158c9f5 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -97,8 +97,8 @@
 @ cdecl ?_set_new_mode@@YAHH at Z(long) msvcrt.?_set_new_mode@@YAHH at Z
 @ stub -arch=win32 ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZH at Z  # void (__cdecl*__cdecl _set_se_translator(int))(unsigned int,struct _EXCEPTION_POINTERS *)
 @ stub -arch=win64 ?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZH at Z  # void (__cdecl*__cdecl _set_se_translator(int))(unsigned int,struct _EXCEPTION_POINTERS * __ptr64)
-@ cdecl -arch=win32 ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z(ptr) msvcrt.?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z
-@ cdecl -arch=win64 ?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z(ptr) msvcrt.?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z
+@ cdecl -arch=win32 ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z(ptr) MSVCR90__set_se_translator
+@ cdecl -arch=win64 ?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z(ptr) MSVCR90__set_se_translator
 @ cdecl -arch=win32 ?_sopen@@YAHPBDHHH at Z(str long long long) msvcrt._sopen
 @ cdecl -arch=win64 ?_sopen@@YAHPEBDHHH at Z(str long long long) msvcrt._sopen
 @ stub -arch=win32 ?_type_info_dtor_internal_method at type_info@@QAEXXZ  # public: void __thiscall type_info::_type_info_dtor_internal_method(void)




More information about the wine-cvs mailing list