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