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