msvcrt: Make _beginthread() error out as documented.

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@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Arkadiusz Hiler 2021-05-05 13:03:10 +03:00 committed by Alexandre Julliard
parent af2b2d0433
commit 80678c4395
1 changed files with 3 additions and 1 deletions

View File

@ -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;
}