mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Change return value of string_wchar_dtor in msvcp90 instead of msvcp60.
This commit is contained in:
parent
ac0b4fe1ac
commit
f0a3c3c2f4
@ -38,7 +38,7 @@ PATCHLIST := \
|
||||
kernel32-Named_Pipe.ok \
|
||||
kernel32-UTF7_Support.ok \
|
||||
libs-Unicode_Collation.ok \
|
||||
msvcp60-basic_string_wchar_dtor.ok \
|
||||
msvcp90-basic_string_wchar_dtor.ok \
|
||||
ntdll-ATL_Thunk.ok \
|
||||
ntdll-DOS_Attributes.ok \
|
||||
ntdll-Dynamic_DST.ok \
|
||||
@ -521,7 +521,7 @@ libs-Unicode_Collation.ok:
|
||||
echo '+ { "libs-Unicode_Collation", "Dmitry Timoshkov", "Fix comparison of punctuation characters." },'; \
|
||||
) > libs-Unicode_Collation.ok
|
||||
|
||||
# Patchset msvcp60-basic_string_wchar_dtor
|
||||
# Patchset msvcp90-basic_string_wchar_dtor
|
||||
# |
|
||||
# | Included patches:
|
||||
# | * basic_string_wchar_dtor needs to return NULL. [by Michael Müller]
|
||||
@ -530,15 +530,15 @@ libs-Unicode_Collation.ok:
|
||||
# | * [#37358] FEAR 1 installer expects basic_string_wchar_dtor to return NULL
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/msvcp60/msvcp.h, dlls/msvcp60/string.c, dlls/msvcp60/tests/string.c
|
||||
# | * dlls/msvcp90/msvcp90.h, dlls/msvcp90/string.c, dlls/msvcp90/tests/string.c
|
||||
# |
|
||||
.INTERMEDIATE: msvcp60-basic_string_wchar_dtor.ok
|
||||
msvcp60-basic_string_wchar_dtor.ok:
|
||||
$(call APPLY_FILE,msvcp60-basic_string_wchar_dtor/0001-msvcp60-basic_string_wchar_dtor-needs-to-return-NULL.patch)
|
||||
$(call APPLY_FILE,msvcp60-basic_string_wchar_dtor/0002-msvcp60-tests-Add-tests-to-check-that-basic_string_w.patch)
|
||||
.INTERMEDIATE: msvcp90-basic_string_wchar_dtor.ok
|
||||
msvcp90-basic_string_wchar_dtor.ok:
|
||||
$(call APPLY_FILE,msvcp90-basic_string_wchar_dtor/0001-msvcp90-basic_string_wchar_dtor-needs-to-return-NULL.patch)
|
||||
$(call APPLY_FILE,msvcp90-basic_string_wchar_dtor/0002-msvcp90-tests-Add-tests-to-check-that-basic_string_w.patch)
|
||||
@( \
|
||||
echo '+ { "msvcp60-basic_string_wchar_dtor", "Michael Müller", "basic_string_wchar_dtor needs to return NULL." },'; \
|
||||
) > msvcp60-basic_string_wchar_dtor.ok
|
||||
echo '+ { "msvcp90-basic_string_wchar_dtor", "Michael Müller", "basic_string_wchar_dtor needs to return NULL." },'; \
|
||||
) > msvcp90-basic_string_wchar_dtor.ok
|
||||
|
||||
# Patchset ntdll-ATL_Thunk
|
||||
# |
|
||||
|
@ -1,43 +0,0 @@
|
||||
From 9274fd3f783aceb822e5ba83797cd8b77eee1872 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 9 Oct 2014 05:08:36 +0200
|
||||
Subject: msvcp60: basic_string_wchar_dtor needs to return NULL.
|
||||
|
||||
---
|
||||
dlls/msvcp60/msvcp.h | 2 +-
|
||||
dlls/msvcp60/string.c | 3 ++-
|
||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/msvcp60/msvcp.h b/dlls/msvcp60/msvcp.h
|
||||
index 0a8c57c..7a3017c 100644
|
||||
--- a/dlls/msvcp60/msvcp.h
|
||||
+++ b/dlls/msvcp60/msvcp.h
|
||||
@@ -64,7 +64,7 @@ typedef struct
|
||||
basic_string_wchar* __thiscall basic_string_wchar_ctor(basic_string_wchar*);
|
||||
basic_string_wchar* basic_string_wchar_ctor_cstr(basic_string_wchar*, const wchar_t*);
|
||||
basic_string_wchar* basic_string_wchar_ctor_cstr_len(basic_string_wchar*, const wchar_t*, MSVCP_size_t);
|
||||
-void __thiscall basic_string_wchar_dtor(basic_string_wchar*);
|
||||
+void* __thiscall basic_string_wchar_dtor(basic_string_wchar*);
|
||||
const wchar_t* __thiscall basic_string_wchar_c_str(const basic_string_wchar*);
|
||||
void basic_string_wchar_clear(basic_string_wchar*);
|
||||
basic_string_wchar* __thiscall basic_string_wchar_append_ch(basic_string_wchar*, wchar_t);
|
||||
diff --git a/dlls/msvcp60/string.c b/dlls/msvcp60/string.c
|
||||
index f1b2b8e..b1a6c42 100644
|
||||
--- a/dlls/msvcp60/string.c
|
||||
+++ b/dlls/msvcp60/string.c
|
||||
@@ -2264,10 +2264,11 @@ basic_string_wchar* __thiscall basic_string_wchar_copy_ctor(
|
||||
/* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
|
||||
/* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_wchar_dtor, 4)
|
||||
-void __thiscall basic_string_wchar_dtor(basic_string_wchar *this)
|
||||
+void* __thiscall basic_string_wchar_dtor(basic_string_wchar *this)
|
||||
{
|
||||
TRACE("%p\n", this);
|
||||
basic_string_wchar__Tidy(this, TRUE);
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
/* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
|
||||
--
|
||||
1.9.1
|
||||
|
@ -0,0 +1,43 @@
|
||||
From ee4a399d58b884d54387aeb1290fba2e304157d7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 9 Oct 2014 17:32:58 +0200
|
||||
Subject: msvcp90: basic_string_wchar_dtor needs to return NULL
|
||||
|
||||
---
|
||||
dlls/msvcp90/msvcp90.h | 2 +-
|
||||
dlls/msvcp90/string.c | 3 ++-
|
||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h
|
||||
index 5062bdc..be87efb 100644
|
||||
--- a/dlls/msvcp90/msvcp90.h
|
||||
+++ b/dlls/msvcp90/msvcp90.h
|
||||
@@ -109,7 +109,7 @@ typedef struct
|
||||
basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor(basic_string_wchar*);
|
||||
basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr(basic_string_wchar*, const wchar_t*);
|
||||
basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len(basic_string_wchar*, const wchar_t*, MSVCP_size_t);
|
||||
-void __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar*);
|
||||
+void* __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar*);
|
||||
const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar*);
|
||||
void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar*);
|
||||
basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_ch(basic_string_wchar*, wchar_t);
|
||||
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
|
||||
index ce05613..982b801 100644
|
||||
--- a/dlls/msvcp90/string.c
|
||||
+++ b/dlls/msvcp90/string.c
|
||||
@@ -2704,10 +2704,11 @@ basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ptr_ptr(basic_strin
|
||||
/* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
|
||||
/* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4)
|
||||
-void __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar *this)
|
||||
+void* __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar *this)
|
||||
{
|
||||
TRACE("%p\n", this);
|
||||
basic_string_wchar_tidy(this, TRUE, 0);
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
/* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
|
||||
--
|
||||
1.9.1
|
||||
|
@ -1,27 +1,27 @@
|
||||
From 7eda43ab8aa84bda2dcf6624e5da45063b7a4162 Mon Sep 17 00:00:00 2001
|
||||
From 5514f8e7f8421577dc300c146ed1943d254d903c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 9 Oct 2014 05:22:24 +0200
|
||||
Subject: msvcp60/tests: Add tests to check that basic_string_wchar_dtor
|
||||
Date: Thu, 9 Oct 2014 17:35:50 +0200
|
||||
Subject: msvcp90/tests: Add tests to check that basic_string_wchar_dtor
|
||||
returns NULL.
|
||||
|
||||
---
|
||||
dlls/msvcp60/tests/string.c | 74 ++++++++++++++++++++++++++++++---------------
|
||||
1 file changed, 50 insertions(+), 24 deletions(-)
|
||||
dlls/msvcp90/tests/string.c | 79 +++++++++++++++++++++++++++++----------------
|
||||
1 file changed, 52 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/dlls/msvcp60/tests/string.c b/dlls/msvcp60/tests/string.c
|
||||
index 3ed1480..0ed0648 100644
|
||||
--- a/dlls/msvcp60/tests/string.c
|
||||
+++ b/dlls/msvcp60/tests/string.c
|
||||
@@ -77,7 +77,7 @@ static size_t *p_basic_string_char_npos;
|
||||
diff --git a/dlls/msvcp90/tests/string.c b/dlls/msvcp90/tests/string.c
|
||||
index f1aa92a..a2cd46f 100644
|
||||
--- a/dlls/msvcp90/tests/string.c
|
||||
+++ b/dlls/msvcp90/tests/string.c
|
||||
@@ -85,7 +85,7 @@ static size_t *p_basic_string_char_npos;
|
||||
static basic_string_wchar* (__thiscall *p_basic_string_wchar_ctor)(basic_string_wchar*);
|
||||
static basic_string_wchar* (__thiscall *p_basic_string_wchar_copy_ctor)(basic_string_wchar*, basic_string_wchar*);
|
||||
static basic_string_wchar* (__thiscall *p_basic_string_wchar_ctor_cstr_alloc)(basic_string_wchar*, const wchar_t*, void*);
|
||||
static basic_string_wchar* (__thiscall *p_basic_string_wchar_ctor_cstr)(basic_string_wchar*, const wchar_t*);
|
||||
-static void (__thiscall *p_basic_string_wchar_dtor)(basic_string_wchar*);
|
||||
+static void* (__thiscall *p_basic_string_wchar_dtor)(basic_string_wchar*);
|
||||
static basic_string_wchar* (__thiscall *p_basic_string_wchar_erase)(basic_string_wchar*, size_t, size_t);
|
||||
static basic_string_wchar* (__thiscall *p_basic_string_wchar_assign_cstr_len)(basic_string_wchar*, const wchar_t*, size_t);
|
||||
static const wchar_t* (__thiscall *p_basic_string_wchar_cstr)(basic_string_wchar*);
|
||||
@@ -92,32 +92,35 @@ static void (__thiscall *p_basic_string_wchar_swap)(basic_string_wchar*, basic_s
|
||||
@@ -113,32 +113,35 @@ static void __cdecl test_invalid_parameter_handler(const wchar_t *expression,
|
||||
#include "pshpack1.h"
|
||||
struct thiscall_thunk
|
||||
{
|
||||
@ -74,7 +74,7 @@ index 3ed1480..0ed0648 100644
|
||||
thunk->jmp_edx = 0xe2ff; /* jmp *%edx */
|
||||
call_thiscall_func1 = (void *)thunk;
|
||||
call_thiscall_func2 = (void *)thunk;
|
||||
@@ -127,15 +130,17 @@ static void init_thiscall_thunk(void)
|
||||
@@ -148,15 +151,16 @@ static void init_thiscall_thunk(void)
|
||||
call_thiscall_func6 = (void *)thunk;
|
||||
}
|
||||
|
||||
@ -82,24 +82,26 @@ index 3ed1480..0ed0648 100644
|
||||
-#define call_func2(func,_this,a) call_thiscall_func2(func,_this,(const void*)a)
|
||||
-#define call_func3(func,_this,a,b) call_thiscall_func3(func,_this,(const void*)a,(const void*)b)
|
||||
-#define call_func4(func,_this,a,b,c) call_thiscall_func4(func,_this,(const void*)a,\
|
||||
+
|
||||
- (const void*)b,(const void*)c)
|
||||
-#define call_func5(func,_this,a,b,c,d) call_thiscall_func5(func,_this,(const void*)a,\
|
||||
- (const void*)b,(const void*)c,(const void*)d)
|
||||
-#define call_func6(func,_this,a,b,c,d,e) call_thiscall_func6(func,_this,(const void*)a,\
|
||||
- (const void*)b,(const void*)c,(const void*)d,(const void*)e)
|
||||
+#define call_func1(func,_this) call_thiscall_func1(func,0,_this)
|
||||
+#define call_func2(func,_this,a) call_thiscall_func2(func,0,_this,(const void*)a)
|
||||
+#define call_func3(func,_this,a,b) call_thiscall_func3(func,0,_this,(const void*)a,(const void*)b)
|
||||
+#define call_func4(func,_this,a,b,c) call_thiscall_func4(func,0,_this,(const void*)a,\
|
||||
(const void*)b,(const void*)c)
|
||||
-#define call_func5(func,_this,a,b,c,d) call_thiscall_func5(func,_this,(const void*)a,\
|
||||
+ (const void*)b,(const void*)c)
|
||||
+#define call_func5(func,_this,a,b,c,d) call_thiscall_func5(func,0,_this,(const void*)a,\
|
||||
(const void*)b,(const void*)c,(const void*)d)
|
||||
-#define call_func6(func,_this,a,b,c,d,e) call_thiscall_func6(func,_this,(const void*)a,\
|
||||
+ (const void*)b,(const void*)c,(const void*)d)
|
||||
+#define call_func6(func,_this,a,b,c,d,e) call_thiscall_func6(func,0,_this,(const void*)a,\
|
||||
(const void*)b,(const void*)c,(const void*)d,(const void*)e)
|
||||
+ (const void*)b,(const void*)c,(const void*)d,(const void*)e)
|
||||
+#define call_func1_eax(func,eax,_this) call_thiscall_func1(func,eax,_this)
|
||||
|
||||
#else
|
||||
|
||||
@@ -687,6 +692,26 @@ static void test_basic_string_wchar_swap(void) {
|
||||
call_func1(p_basic_string_wchar_dtor, &str2);
|
||||
@@ -767,6 +771,26 @@ static void test_basic_string_char_find_last_not_of(void) {
|
||||
}
|
||||
}
|
||||
|
||||
+static void test_basic_string_dtor_eax(void) {
|
||||
@ -111,12 +113,12 @@ index 3ed1480..0ed0648 100644
|
||||
+ mbstowcs(wtmp1, "qwerty", 32);
|
||||
+
|
||||
+ /* eax = 0x1337 */
|
||||
+ call_func3(p_basic_string_wchar_ctor_cstr_alloc, &str1, wtmp1, &fake_allocator);
|
||||
+ call_func2(p_basic_string_wchar_ctor_cstr, &str1, wtmp1);
|
||||
+ ret = call_func1_eax(p_basic_string_wchar_dtor, 0x1337, &str1);
|
||||
+ ok (ret == (void *)0x0, "Expected eax value 0x%x, got 0x%x\n", 0x0, (unsigned int)ret);
|
||||
+
|
||||
+ /* eax = 0xdeadbeef */
|
||||
+ call_func3(p_basic_string_wchar_ctor_cstr_alloc, &str1, wtmp1, &fake_allocator);
|
||||
+ call_func2(p_basic_string_wchar_ctor_cstr, &str1, wtmp1);
|
||||
+ ret = call_func1_eax(p_basic_string_wchar_dtor, 0xdeadbeef, &str1);
|
||||
+ ok (ret == (void *)0x0, "Expected eax value 0x%x, got 0x%x\n", 0x0, (unsigned int)ret);
|
||||
+#endif
|
||||
@ -125,14 +127,14 @@ index 3ed1480..0ed0648 100644
|
||||
START_TEST(string)
|
||||
{
|
||||
if(!init())
|
||||
@@ -702,6 +727,7 @@ START_TEST(string)
|
||||
test_basic_string_char_replace();
|
||||
@@ -783,6 +807,7 @@ START_TEST(string)
|
||||
test_basic_string_wchar();
|
||||
test_basic_string_wchar_swap();
|
||||
test_basic_string_char_find_last_not_of();
|
||||
+ test_basic_string_dtor_eax();
|
||||
|
||||
FreeLibrary(msvcp);
|
||||
}
|
||||
ok(!invalid_parameter, "invalid_parameter_handler was invoked too many times\n");
|
||||
|
||||
--
|
||||
1.9.1
|
||||
|
Loading…
x
Reference in New Issue
Block a user