From: boolemancer Date: Tue, 8 Nov 2022 11:04:23 +0000 (-0800) Subject: Fix the Windows pthread_create shim X-Git-Tag: upstream/1.7.4~1842 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=0bfe728b8432a786fdc4aca70c4dad73d2d72e77;p=pkg%2Fggml%2Fsources%2Fwhisper.cpp Fix the Windows pthread_create shim The current implementation doesn't actually set the out parameter, and it returns 0 on failure instead of on success. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a509334..38e4cd7b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,8 +143,8 @@ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES else() message(STATUS "x86 detected") if (MSVC) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:AVX2") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /arch:AVX2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /arch:AVX2") else() if (EMSCRIPTEN) # we require support for WASM SIMD 128-bit diff --git a/ggml.c b/ggml.c index 79b910bb..484b6dcc 100644 --- a/ggml.c +++ b/ggml.c @@ -37,8 +37,14 @@ typedef HANDLE pthread_t; typedef DWORD thread_ret_t; static int pthread_create(pthread_t* out, void* unused, thread_ret_t(*func)(void*), void* arg) { - out = CreateThread(NULL, 0, func, arg, 0, NULL); - return out != NULL; + HANDLE handle = CreateThread(NULL, 0, func, arg, 0, NULL); + if (handle == NULL) + { + return EAGAIN; + } + + *out = handle; + return 0; } static int pthread_join(pthread_t thread, void* unused) {