Piotr Caban : msvcp100: Improve is_current_task_group_canceling function stub.

Alexandre Julliard julliard at winehq.org
Fri Mar 24 16:24:24 CDT 2017


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Mar 24 12:45:10 2017 +0100

msvcp100: Improve is_current_task_group_canceling function stub.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcp100/msvcp100.spec         |  2 +-
 dlls/msvcp110/msvcp110.spec         |  2 +-
 dlls/msvcp120/msvcp120.spec         |  2 +-
 dlls/msvcp120_app/msvcp120_app.spec |  2 +-
 dlls/msvcp90/misc.c                 | 10 ++++------
 dlls/msvcp90/msvcp90.h              |  4 ++++
 dlls/msvcp90/msvcp_main.c           | 10 +++++++++-
 7 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/dlls/msvcp100/msvcp100.spec b/dlls/msvcp100/msvcp100.spec
index 6841678..7042598 100644
--- a/dlls/msvcp100/msvcp100.spec
+++ b/dlls/msvcp100/msvcp100.spec
@@ -2068,7 +2068,7 @@
 @ extern ?is_bounded at _Num_base@std@@2_NB std_Num_base_is_bounded
 @ extern ?is_bounded at _Num_float_base@std@@2_NB std_Num_float_base_is_bounded
 @ extern ?is_bounded at _Num_int_base@std@@2_NB std_Num_int_base_is_bounded
-@ cdecl ?is_current_task_group_canceling at Concurrency@@YA_NXZ(ptr) is_current_task_group_canceling
+@ cdecl ?is_current_task_group_canceling at Concurrency@@YA_NXZ() is_current_task_group_canceling
 @ extern ?is_exact at _Num_base@std@@2_NB std_Num_base_is_exact
 @ extern ?is_exact at _Num_float_base@std@@2_NB std_Num_float_base_is_exact
 @ extern ?is_exact at _Num_int_base@std@@2_NB std_Num_int_base_is_exact
diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec
index 602cb2b..52524c5 100644
--- a/dlls/msvcp110/msvcp110.spec
+++ b/dlls/msvcp110/msvcp110.spec
@@ -2832,7 +2832,7 @@
 @ cdecl -arch=arm ?is@?$ctype at _W@std@@QBA_NF_W at Z(ptr long long) ctype_wchar_is_ch
 @ thiscall -arch=i386 ?is@?$ctype at _W@std@@QBE_NF_W at Z(ptr long long) ctype_wchar_is_ch
 @ cdecl -arch=win64 ?is@?$ctype at _W@std@@QEBA_NF_W at Z(ptr long long) ctype_wchar_is_ch
-@ cdecl ?is_current_task_group_canceling at Concurrency@@YA_NXZ(ptr) is_current_task_group_canceling
+@ cdecl ?is_current_task_group_canceling at Concurrency@@YA_NXZ() is_current_task_group_canceling
 @ stub ?is_task_cancellation_requested at Concurrency@@YA_NXZ
 @ cdecl -arch=arm ?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAAXXZ(ptr) basic_istream_char_isfx
 @ thiscall -arch=i386 ?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAEXXZ(ptr) basic_istream_char_isfx
diff --git a/dlls/msvcp120/msvcp120.spec b/dlls/msvcp120/msvcp120.spec
index a839575..173728a 100644
--- a/dlls/msvcp120/msvcp120.spec
+++ b/dlls/msvcp120/msvcp120.spec
@@ -2774,7 +2774,7 @@
 @ cdecl -arch=arm ?is@?$ctype at _W@std@@QBA_NF_W at Z(ptr long long) ctype_wchar_is_ch
 @ thiscall -arch=i386 ?is@?$ctype at _W@std@@QBE_NF_W at Z(ptr long long) ctype_wchar_is_ch
 @ cdecl -arch=win64 ?is@?$ctype at _W@std@@QEBA_NF_W at Z(ptr long long) ctype_wchar_is_ch
-@ cdecl ?is_current_task_group_canceling at Concurrency@@YA_NXZ(ptr) is_current_task_group_canceling
+@ cdecl ?is_current_task_group_canceling at Concurrency@@YA_NXZ() is_current_task_group_canceling
 @ cdecl -arch=arm ?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAAXXZ(ptr) basic_istream_char_isfx
 @ thiscall -arch=i386 ?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAEXXZ(ptr) basic_istream_char_isfx
 @ cdecl -arch=win64 ?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QEAAXXZ(ptr) basic_istream_char_isfx
diff --git a/dlls/msvcp120_app/msvcp120_app.spec b/dlls/msvcp120_app/msvcp120_app.spec
index 6bc6e5a..8a03b41 100644
--- a/dlls/msvcp120_app/msvcp120_app.spec
+++ b/dlls/msvcp120_app/msvcp120_app.spec
@@ -2774,7 +2774,7 @@
 @ cdecl -arch=arm ?is@?$ctype at _W@std@@QBA_NF_W at Z(ptr long long) msvcp120.?is@?$ctype at _W@std@@QBA_NF_W at Z
 @ thiscall -arch=i386 ?is@?$ctype at _W@std@@QBE_NF_W at Z(ptr long long) msvcp120.?is@?$ctype at _W@std@@QBE_NF_W at Z
 @ cdecl -arch=win64 ?is@?$ctype at _W@std@@QEBA_NF_W at Z(ptr long long) msvcp120.?is@?$ctype at _W@std@@QEBA_NF_W at Z
-@ cdecl ?is_current_task_group_canceling at Concurrency@@YA_NXZ(ptr) msvcp120.?is_current_task_group_canceling at Concurrency@@YA_NXZ
+@ cdecl ?is_current_task_group_canceling at Concurrency@@YA_NXZ() msvcp120.?is_current_task_group_canceling at Concurrency@@YA_NXZ
 @ cdecl -arch=arm ?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAAXXZ(ptr) msvcp120.?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAAXXZ
 @ thiscall -arch=i386 ?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAEXXZ(ptr) msvcp120.?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAEXXZ
 @ cdecl -arch=win64 ?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QEAAXXZ(ptr) msvcp120.?isfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QEAAXXZ
diff --git a/dlls/msvcp90/misc.c b/dlls/msvcp90/misc.c
index 81a6f81..fa5ac1d 100644
--- a/dlls/msvcp90/misc.c
+++ b/dlls/msvcp90/misc.c
@@ -1400,15 +1400,13 @@ void __cdecl _Unlock_shared_ptr_spin_lock(void)
 }
 #endif
 
+#if _MSVCP_VER >= 100
 /* ?is_current_task_group_canceling at Concurrency@@YA_NXZ */
-MSVCP_bool __cdecl is_current_task_group_canceling(void *this)
+MSVCP_bool __cdecl is_current_task_group_canceling(void)
 {
-    static int once;
-
-    if (!once++)
-        FIXME("(%p) stub\n", this);
-    return FALSE;
+    return Context_IsCurrentTaskCollectionCanceling();
 }
+#endif
 
 #if _MSVCP_VER >= 140
 typedef struct {
diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h
index 86b787b..d751186 100644
--- a/dlls/msvcp90/msvcp90.h
+++ b/dlls/msvcp90/msvcp90.h
@@ -72,6 +72,10 @@ extern void (__thiscall *critical_section_unlock)(critical_section*);
 extern MSVCP_bool (__thiscall *critical_section_trylock)(critical_section*);
 #endif
 
+#if _MSVCP_VER >= 100
+extern MSVCP_bool (__cdecl *Context_IsCurrentTaskCollectionCanceling)(void);
+#endif
+
 /* basic_string<char, char_traits<char>, allocator<char>> */
 typedef struct
 {
diff --git a/dlls/msvcp90/msvcp_main.c b/dlls/msvcp90/msvcp_main.c
index 377ae01..3898c9d 100644
--- a/dlls/msvcp90/msvcp_main.c
+++ b/dlls/msvcp90/msvcp_main.c
@@ -68,6 +68,10 @@ void (__thiscall *critical_section_unlock)(critical_section*);
 MSVCP_bool (__thiscall *critical_section_trylock)(critical_section*);
 #endif
 
+#if _MSVCP_VER >= 100
+MSVCP_bool (__cdecl *Context_IsCurrentTaskCollectionCanceling)(void);
+#endif
+
 #define VERSION_STRING(ver) #ver
 #if _MSVCP_VER >= 140
 #define MSVCRT_NAME(ver) "ucrtbase.dll"
@@ -133,7 +137,7 @@ int __cdecl sprintf(char *buf, const char *fmt, ...)
 static void init_cxx_funcs(void)
 {
     HMODULE hmod = GetModuleHandleA( MSVCRT_NAME(_MSVCP_VER) );
-#if _MSVCP_VER >= 110
+#if _MSVCP_VER >= 100
     HMODULE hcon = hmod;
 #endif
 
@@ -187,6 +191,10 @@ static void init_cxx_funcs(void)
 #endif
     }
 #endif /* _MSVCP_VER >= 110 */
+
+#if _MSVCP_VER >= 100
+    Context_IsCurrentTaskCollectionCanceling = (void*)GetProcAddress(hcon, "?IsCurrentTaskCollectionCanceling at Context@Concurrency@@SA_NXZ");
+#endif
 }
 
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)




More information about the wine-cvs mailing list