Author: akhaldi
Date: Wed Mar 9 08:36:59 2016
New Revision: 70976
URL:
http://svn.reactos.org/svn/reactos?rev=70976&view=rev
Log:
[MSVCRT_WINETEST] Sync with Wine Staging 1.9.4. CORE-10912
Modified:
trunk/rostests/winetests/msvcrt/cpp.c
trunk/rostests/winetests/msvcrt/locale.c
trunk/rostests/winetests/msvcrt/misc.c
trunk/rostests/winetests/msvcrt/scanf.c
Modified: trunk/rostests/winetests/msvcrt/cpp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msvcrt/cpp.c?re…
==============================================================================
--- trunk/rostests/winetests/msvcrt/cpp.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msvcrt/cpp.c [iso-8859-1] Wed Mar 9 08:36:59 2016
@@ -146,7 +146,7 @@
}
#define call_func1(func,_this) call_thiscall_func1(func,_this)
-#define call_func2(func,_this,a) call_thiscall_func2(func,_this,(const void*)a)
+#define call_func2(func,_this,a) call_thiscall_func2(func,_this,(const void*)(a))
#else
@@ -452,8 +452,7 @@
{
/* Check the rtti */
type_info *ti = p__RTtypeid(&e);
- ok (ti && ti->mangled &&
- !strcmp(ti->mangled, ".?AVexception@@"), "bad rtti for
e\n");
+ ok (ti && !strcmp(ti->mangled, ".?AVexception@@"), "bad
rtti for e\n");
if (ti)
{
@@ -1036,15 +1035,13 @@
child_class_sig0_rtti.object_locator.type_hierarchy =
RTTI_REF_SIG0(child_class_sig0_rtti, object_hierarchy, base);
ti = p__RTtypeid(&simple_class_sig0);
- ok (ti && ti->mangled && !strcmp(ti->mangled,
"simple_class"),
- "incorrect rtti data\n");
+ ok (ti && !strcmp(ti->mangled, "simple_class"), "incorrect
rtti data\n");
casted = p__RTCastToVoid(&simple_class_sig0);
ok (casted == (void*)&simple_class_sig0, "failed cast to void\n");
ti = p__RTtypeid(&child_class_sig0);
- ok (ti && ti->mangled && !strcmp(ti->mangled,
"child_class"),
- "incorrect rtti data\n");
+ ok (ti && !strcmp(ti->mangled, "child_class"), "incorrect
rtti data\n");
casted = p__RTCastToVoid(&child_class_sig0);
ok (casted == (void*)&child_class_sig0, "failed cast to void\n");
@@ -1064,15 +1061,13 @@
}
ti = p__RTtypeid(&simple_class);
- ok (ti && ti->mangled && !strcmp(ti->mangled,
"simple_class"),
- "incorrect rtti data\n");
+ ok (ti && !strcmp(ti->mangled, "simple_class"), "incorrect
rtti data\n");
casted = p__RTCastToVoid(&simple_class);
ok (casted == (void*)&simple_class, "failed cast to void\n");
ti = p__RTtypeid(&child_class);
- ok (ti && ti->mangled && !strcmp(ti->mangled,
"child_class"),
- "incorrect rtti data\n");
+ ok (ti && !strcmp(ti->mangled, "child_class"), "incorrect
rtti data\n");
casted = p__RTCastToVoid(&child_class);
ok (casted == (void*)&child_class, "failed cast to void\n");
@@ -1323,6 +1318,11 @@
/* 128 */ {"??Xstd@@YAAEAV?$complex@M@0@AEAV10@AEBV10@@Z",
"class std::complex<float> & std::operator*=(class
std::complex<float> &,class std::complex<float> const &)",
"??Xstd@@YAAEAV?$complex@M@0@AEAV10@AEBV10@@Z", 2},
+/* 129 */
{"??$run@XVTask_Render_Preview@@@QtConcurrent@@YA?AV?$QFuture@X@@PEAVTask_Render_Preview@@P82@EAAXXZ@Z",
+ "class QFuture<void> __cdecl QtConcurrent::run<void,class
Task_Render_Preview>(class Task_Render_Preview * __ptr64,void (__cdecl
Task_Render_Preview::*)(void) __ptr64)",
+
"??$run@XVTask_Render_Preview@@@QtConcurrent@@YA?AV?$QFuture@X@@PEAVTask_Render_Preview@@P82@EAAXXZ@Z"},
+/* 130 */ {"??_E?$TStrArray@$$BY0BAA@D$0BA@@@UAEPAXI@Z",
+ "public: virtual void * __thiscall TStrArray<char
[256],16>::`vector deleting destructor'(unsigned int)"},
};
int i, num_test = (sizeof(test)/sizeof(test[0]));
char* name;
Modified: trunk/rostests/winetests/msvcrt/locale.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msvcrt/locale.c…
==============================================================================
--- trunk/rostests/winetests/msvcrt/locale.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msvcrt/locale.c [iso-8859-1] Wed Mar 9 08:36:59 2016
@@ -148,11 +148,11 @@
ok(ret != NULL || broken (ret == NULL), "ret == NULL\n");
if(ret)
{
+ trace("Chinese_China.936=%s\n", ret);
todo_wine
- ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of
China.936")
- || !strcmp(ret, "Chinese (Simplified)_China.936")
+ ok(!strcmp(ret, "Chinese (Simplified)_People's Republic of
China.936") /* Vista - Win7 */
+ || !strcmp(ret, "Chinese (Simplified)_China.936") /* Win8 - Win10 */
|| broken(!strcmp(ret, "Chinese_People's Republic of China.936")),
"ret = %s\n", ret);
- trace("ret is %s\n", ret);
}
ret = setlocale(LC_ALL, "csy");
@@ -450,33 +450,39 @@
ret = setlocale(LC_ALL, "non");
ok(ret != NULL || broken (ret == NULL), "ret == NULL\n");
if(ret)
- ok(!strcmp( ret, "Norwegian-Nynorsk_Norway.1252")
+ ok(!strcmp( ret, "Norwegian-Nynorsk_Norway.1252") /* XP - Win10 */
|| !strcmp(ret, "Norwegian (Nynorsk)_Norway.1252")
|| broken(!strcmp(ret, "Norwegian (Bokm\xe5l)_Norway.1252"))
- || broken(!strcmp(ret, "Norwegian_Norway.1252")), "ret =
%s\n", ret);
+ || broken(!strcmp(ret, "Norwegian_Norway.1252")), /* WinME */
+ "ret = %s\n", ret);
ret = setlocale(LC_ALL, "nor");
ok(ret != NULL || broken (ret == NULL), "ret == NULL\n");
if(ret)
- ok(!strcmp(ret, "Norwegian (Bokm\xe5l)_Norway.1252")
+ ok(!strcmp(ret, "Norwegian (Bokm\xe5l)_Norway.1252") /* XP - Win8 */
+ || !strcmp(ret, "Norwegian Bokm\xe5l_Norway.1252") /* Win10 */
|| !strcmp(ret, "Norwegian (Bokmal)_Norway.1252")
- || broken(!strcmp(ret, "Norwegian_Norway.1252")), "ret =
%s\n", ret);
+ || broken(!strcmp(ret, "Norwegian_Norway.1252")), /* WinME */
+ "ret = %s\n", ret);
ret = setlocale(LC_ALL, "norwegian-bokmal");
ok(ret != NULL || broken (ret == NULL), "ret == NULL\n");
if(ret)
- ok(!strcmp(ret, "Norwegian (Bokm\xe5l)_Norway.1252")
+ ok(!strcmp(ret, "Norwegian (Bokm\xe5l)_Norway.1252") /* XP - Win8 */
+ || !strcmp(ret, "Norwegian Bokm\xe5l_Norway.1252") /* Win10 */
|| !strcmp(ret, "Norwegian (Bokmal)_Norway.1252")
- || broken(!strcmp(ret, "Norwegian_Norway.1252")), "ret =
%s\n", ret);
+ || broken(!strcmp(ret, "Norwegian_Norway.1252")), /* WinME */
+ "ret = %s\n", ret);
ret = setlocale(LC_ALL, "norwegian-nynorsk");
ok(ret != NULL || broken (ret == NULL), "ret == NULL\n");
if(ret)
- ok(!strcmp(ret, "Norwegian-Nynorsk_Norway.1252")
+ ok(!strcmp(ret, "Norwegian-Nynorsk_Norway.1252") /* Vista - Win10 */
|| !strcmp(ret, "Norwegian (Nynorsk)_Norway.1252")
- || broken(!strcmp(ret, "Norwegian_Norway.1252"))
+ || broken(!strcmp(ret, "Norwegian_Norway.1252")) /* WinME */
|| broken(!strcmp(ret, "Norwegian (Bokmal)_Norway.1252"))
- || broken(!strcmp(ret, "Norwegian (Bokm\xe5l)_Norway.1252")), "ret
= %s\n", ret);
+ || broken(!strcmp(ret, "Norwegian (Bokm\xe5l)_Norway.1252")) /* XP
& 2003 */,
+ "ret = %s\n", ret);
ret = setlocale(LC_ALL, "plk");
ok(ret != NULL || broken (ret == NULL), "ret == NULL\n");
@@ -671,12 +677,12 @@
return;
ret = _Gettnames();
- size = ret->data-(char*)ret;
+ size = ret->str[0]-(char*)ret;
/* Newer version of the structure stores both ascii and unicode strings.
* Unicode strings are only initialized on Windows 7
*/
if(sizeof(void*) == 8)
- ok(size==0x2c0 || broken(size==0x170), "structure size: %x\n", size);
+ ok(size==0x2c0 || broken(size==0x168), "structure size: %x\n", size);
else
ok(size==0x164 || broken(size==0xb8), "structure size: %x\n", size);
Modified: trunk/rostests/winetests/msvcrt/misc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msvcrt/misc.c?r…
==============================================================================
--- trunk/rostests/winetests/msvcrt/misc.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msvcrt/misc.c [iso-8859-1] Wed Mar 9 08:36:59 2016
@@ -18,10 +18,11 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "wine/test.h"
+#include <wine/test.h>
#include <errno.h>
#include <stdio.h>
-#include "msvcrt.h"
+#include <msvcrt.h>
+#include <process.h>
static inline float __port_infinity(void)
{
@@ -262,7 +263,7 @@
out = 0xdeadbeef;
ret = p_get_doserrno(&out);
ok(ret == 0, "Expected _get_doserrno to return 0, got %d\n", ret);
- ok(out == ERROR_INVALID_CMM, "Expected output variable to be ERROR_INVAID_CMM,
got %d\n", out);
+ ok(out == ERROR_INVALID_CMM, "Expected output variable to be ERROR_INVALID_CMM,
got %d\n", out);
}
static void test__get_errno(void)
@@ -539,6 +540,66 @@
ok(errno == 0xdeadbeef, "errno = %d\n", errno);
}
+static void __cdecl test_thread_func(void *end_thread_type)
+{
+ if (end_thread_type == (void*)1)
+ _endthread();
+ else if (end_thread_type == (void*)2)
+ ExitThread(0);
+ else if (end_thread_type == (void*)3)
+ _endthreadex(0);
+}
+
+static unsigned __stdcall test_thread_func_ex(void *arg)
+{
+ _endthread();
+ return 0;
+}
+
+static void test_thread_handle_close(void)
+{
+ HANDLE hThread;
+ DWORD ret;
+
+ /* _beginthread: handle is not closed on ExitThread and _endthreadex */
+ hThread = (HANDLE)_beginthread(test_thread_func, 0, (void*)0);
+ ok(hThread != INVALID_HANDLE_VALUE, "_beginthread failed (%d)\n", errno);
+ WaitForSingleObject(hThread, INFINITE);
+ ret = CloseHandle(hThread);
+ ok(!ret, "ret = %d\n", ret);
+
+ hThread = (HANDLE)_beginthread(test_thread_func, 0, (void*)1);
+ ok(hThread != INVALID_HANDLE_VALUE, "_beginthread failed (%d)\n", errno);
+ WaitForSingleObject(hThread, INFINITE);
+ ret = CloseHandle(hThread);
+ ok(!ret, "ret = %d\n", ret);
+
+ hThread = (HANDLE)_beginthread(test_thread_func, 0, (void*)2);
+ ok(hThread != INVALID_HANDLE_VALUE, "_beginthread failed (%d)\n", errno);
+ Sleep(150);
+ ret = WaitForSingleObject(hThread, INFINITE);
+ ok(ret == WAIT_OBJECT_0, "ret = %d\n", ret);
+ ret = CloseHandle(hThread);
+ ok(ret, "ret = %d\n", ret);
+
+ hThread = (HANDLE)_beginthread(test_thread_func, 0, (void*)3);
+ ok(hThread != INVALID_HANDLE_VALUE, "_beginthread failed (%d)\n", errno);
+ Sleep(150);
+ ret = WaitForSingleObject(hThread, INFINITE);
+ ok(ret == WAIT_OBJECT_0, "ret = %d\n", ret);
+ ret = CloseHandle(hThread);
+ ok(ret, "ret = %d\n", ret);
+
+ /* _beginthreadex: handle is not closed on _endthread */
+ hThread = (HANDLE)_beginthreadex(NULL,0, test_thread_func_ex, NULL, 0, NULL);
+ ok(hThread != NULL, "_beginthreadex failed (%d)\n", errno);
+ Sleep(150);
+ ret = WaitForSingleObject(hThread, INFINITE);
+ ok(ret == WAIT_OBJECT_0, "ret = %d\n", ret);
+ ret = CloseHandle(hThread);
+ ok(ret, "ret = %d\n", ret);
+}
+
START_TEST(misc)
{
int arg_c;
@@ -567,4 +628,5 @@
test__invalid_parameter();
test_qsort_s();
test_math_functions();
-}
+ test_thread_handle_close();
+}
Modified: trunk/rostests/winetests/msvcrt/scanf.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msvcrt/scanf.c?…
==============================================================================
--- trunk/rostests/winetests/msvcrt/scanf.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msvcrt/scanf.c [iso-8859-1] Wed Mar 9 08:36:59 2016
@@ -165,7 +165,7 @@
ret = sscanf(buffer, "%lld", &result64);
ok(ret == 1, "Wrong number of arguments read: %d\n", ret);
ret = sprintf(buffer1, "%lld", result64);
- ok(ret==14 || broken(ret==10), "sprintf retuned %d\n", ret);
+ ok(ret==14 || broken(ret==10), "sprintf returned %d\n", ret);
if(ret == 14)
ok(!strcmp(buffer, buffer1), "got %s, expected %s\n", buffer1,
buffer);
@@ -244,6 +244,13 @@
ret = sscanf(buffer, "%d:%d%n", &hour, &min, &number_so_far);
ok(ret == 2, "Wrong number of arguments read: %d\n", ret);
ok(number_so_far == 4, "%%n yielded wrong result: %d\n", number_so_far);
+
+ buffer[0] = 0;
+ buffer1[0] = 0;
+ ret = sscanf("test=value\xda", "%[^=] = %[^;]", buffer,
buffer1);
+ ok(ret == 2, "got %d\n", ret);
+ ok(!strcmp(buffer, "test"), "buf %s\n", buffer);
+ ok(!strcmp(buffer1, "value\xda"), "buf %s\n", buffer1);
}
static void test_sscanf_s(void)