[PATCH 1/5] msvcrt: Make _beginthread() error out as documented.
Arkadiusz Hiler
ahiler at codeweavers.com
Wed May 5 05:03:10 CDT 2021
msvcrt_set_errno() seems to be doing the right thing in case of too many
threads, invalid parameters, etc.
Signed-off-by: Arkadiusz Hiler <ahiler at codeweavers.com>
---
dlls/msvcrt/thread.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/msvcrt/thread.c b/dlls/msvcrt/thread.c
index c2fc863dd33..8bf8d9327c1 100644
--- a/dlls/msvcrt/thread.c
+++ b/dlls/msvcrt/thread.c
@@ -118,6 +118,8 @@ uintptr_t CDECL _beginthread(
TRACE("(%p, %d, %p)\n", start_address, stack_size, arglist);
+ if (!MSVCRT_CHECK_PMT(start_address)) return -1;
+
trampoline = malloc(sizeof(*trampoline));
if(!trampoline) {
*_errno() = EAGAIN;
@@ -128,7 +130,7 @@ uintptr_t CDECL _beginthread(
trampoline, CREATE_SUSPENDED, NULL);
if(!thread) {
free(trampoline);
- *_errno() = EAGAIN;
+ msvcrt_set_errno(GetLastError());
return -1;
}
--
2.31.1
More information about the wine-devel
mailing list