From 54a74c42033e42869e69e7dc9e67efa1faf225be Mon Sep 17 00:00:00 2001 From: KJ Tsanaktsidis Date: Fri, 26 May 2023 12:02:30 +1000 Subject: [PATCH] Move rb_thread_cond_struct definition into thread_native.h On Win32, currently, rb_nativethread_cond_t is an incomplete type because it's a typedef for `struct rb_thread_cond_struct`. That means you can't actually allocate a rb_nativethread_cond_t unless you also include THREAD_IMPL_H (since its defined in thread_win32.h) (alternatively, including vm_core.h also works). Move the definition of rb_thread_cond_struct into thread_native.h to alleviate this. --- include/ruby/thread_native.h | 5 +++++ thread_win32.h | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/ruby/thread_native.h b/include/ruby/thread_native.h index c23b15e133..8217a67514 100644 --- a/include/ruby/thread_native.h +++ b/include/ruby/thread_native.h @@ -28,6 +28,11 @@ typedef union rb_thread_lock_union { CRITICAL_SECTION crit; } rb_nativethread_lock_t; +struct rb_thread_cond_struct { + struct cond_event_entry *next; + struct cond_event_entry *prev; +}; + typedef struct rb_thread_cond_struct rb_nativethread_cond_t; #elif defined(HAVE_PTHREAD_H) diff --git a/thread_win32.h b/thread_win32.h index f00f3b2056..0dfe9d46de 100644 --- a/thread_win32.h +++ b/thread_win32.h @@ -21,11 +21,6 @@ WINBASEAPI BOOL WINAPI TryEnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection); -struct rb_thread_cond_struct { - struct cond_event_entry *next; - struct cond_event_entry *prev; -}; - struct rb_native_thread { HANDLE thread_id; HANDLE interrupt_event;