From: Daniel Lehman dlehman25@gmail.com
--- dlls/msvcp140/tests/msvcp140.c | 16 +++++++++++++--- dlls/msvcp90/misc.c | 3 +++ 2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcp140/tests/msvcp140.c b/dlls/msvcp140/tests/msvcp140.c index d2bcd192f45..7b6dfa1af3b 100644 --- a/dlls/msvcp140/tests/msvcp140.c +++ b/dlls/msvcp140/tests/msvcp140.c @@ -166,11 +166,15 @@ typedef struct void *tail; } critical_section;
-typedef struct -{ +typedef union { + critical_section conc; + SRWLOCK win; +} cs; + +typedef struct { DWORD flags; - critical_section cs; ULONG_PTR unknown; + cs cs; DWORD thread_id; DWORD count; } *_Mtx_t; @@ -1682,15 +1686,21 @@ static void test__Mtx(void)
ok(mtx->thread_id == -1, "mtx.thread_id = %lx\n", mtx->thread_id); ok(mtx->count == 0, "mtx.count = %lx\n", mtx->count); + todo_wine + ok(mtx->cs.win.Ptr == 0, "mtx.cs == %p\n", mtx->cs.win.Ptr); p__Mtx_lock(mtx); ok(mtx->thread_id == GetCurrentThreadId(), "mtx.thread_id = %lx\n", mtx->thread_id); ok(mtx->count == 1, "mtx.count = %lx\n", mtx->count); + ok(mtx->cs.win.Ptr != 0, "mtx.cs == %p\n", mtx->cs.win.Ptr); p__Mtx_lock(mtx); ok(mtx->thread_id == GetCurrentThreadId(), "mtx.thread_id = %lx\n", mtx->thread_id); ok(mtx->count == 1, "mtx.count = %lx\n", mtx->count); + ok(mtx->cs.win.Ptr != 0, "mtx.cs == %p\n", mtx->cs.win.Ptr); p__Mtx_unlock(mtx); ok(mtx->thread_id == -1, "mtx.thread_id = %lx\n", mtx->thread_id); ok(mtx->count == 0, "mtx.count = %lx\n", mtx->count); + todo_wine + ok(mtx->cs.win.Ptr == 0, "mtx.cs == %p\n", mtx->cs.win.Ptr); p__Mtx_unlock(mtx); ok(mtx->thread_id == -1, "mtx.thread_id = %lx\n", mtx->thread_id); ok(mtx->count == -1, "mtx.count = %lx\n", mtx->count); diff --git a/dlls/msvcp90/misc.c b/dlls/msvcp90/misc.c index a1c9c7f0646..ba94fe03eec 100644 --- a/dlls/msvcp90/misc.c +++ b/dlls/msvcp90/misc.c @@ -739,6 +739,9 @@ void __cdecl _Mtx_init_in_situ(_Mtx_t mtx, int flags) FIXME("unknown flags ignored: %x\n", flags);
mtx->flags = flags; +#if _MSVCP_VER >= 140 + mtx->unknown = 0; +#endif cs_init(&mtx->cs); mtx->thread_id = -1; mtx->count = 0;