Arkadiusz Hiler : ucrtbase: Add invalid param tests for _beginthread[ex]().

Alexandre Julliard julliard at winehq.org
Wed May 5 16:09:01 CDT 2021


Module: wine
Branch: master
Commit: 7856fec19ed324f9ab950e27bcf6a6c7f0d0a326
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=7856fec19ed324f9ab950e27bcf6a6c7f0d0a326

Author: Arkadiusz Hiler <ahiler at codeweavers.com>
Date:   Wed May  5 13:03:14 2021 +0300

ucrtbase: Add invalid param tests for _beginthread[ex]().

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

---

 dlls/ucrtbase/tests/thread.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/dlls/ucrtbase/tests/thread.c b/dlls/ucrtbase/tests/thread.c
index 01f46029c06..512d2158b66 100644
--- a/dlls/ucrtbase/tests/thread.c
+++ b/dlls/ucrtbase/tests/thread.c
@@ -132,6 +132,39 @@ static void test_thread_library_reference(char *thread_dll,
     CloseHandle(detach_event);
 }
 
+static BOOL handler_called;
+
+void CDECL test_invalid_parameter_handler(const wchar_t *expression,
+                                            const wchar_t *function_name,
+                                            const wchar_t *file_name,
+                                            unsigned line_number,
+                                            uintptr_t reserved)
+{
+    handler_called = TRUE;
+}
+
+static void test_thread_invalid_params(void)
+{
+    uintptr_t hThread;
+    _invalid_parameter_handler old = _set_invalid_parameter_handler(test_invalid_parameter_handler);
+
+    errno = 0;
+    handler_called = FALSE;
+    hThread = _beginthreadex(NULL, 0, NULL, NULL, 0, NULL);
+    ok(hThread == 0, "_beginthreadex unexpected ret: %d\n", hThread);
+    ok(errno == EINVAL, "_beginthreadex unexpected errno: %d\n", errno);
+    ok(handler_called, "Expected invalid_parameter_handler to be called\n");
+
+    errno = 0;
+    handler_called = FALSE;
+    hThread = _beginthread(NULL, 0, NULL);
+    ok(hThread == -1, "_beginthread unexpected ret: %d\n", hThread);
+    ok(errno == EINVAL, "_beginthread unexpected errno: %d\n", errno);
+    ok(handler_called, "Expected invalid_parameter_handler to be called\n");
+
+    _set_invalid_parameter_handler(old);
+}
+
 START_TEST(thread)
 {
     BOOL ret;
@@ -144,4 +177,6 @@ START_TEST(thread)
 
     ret = DeleteFileA(thread_dll);
     ok(ret, "Failed to remove the test dll, err: %u", GetLastError());
+
+    test_thread_invalid_params();
 }




More information about the wine-cvs mailing list