Subject: Re: [PATCH v3] win32: pthread_cond_init should return a value

From: Junio C Hamano <[email-masked]>
Date: Sun, 07 Dec 2025 09:18:31 +0900

Junio C Hamano <[email-masked]> writes:

> "AZero13 via GitGitGadget" <[email-masked]> writes:
>
>> From: Greg Funni <[email-masked]>
>>
>> This value is not checked, but it must return to match POSIX
>>
>> Signed-off-by: Greg Funni <[email-masked]>
>> ---
>>     win32: pthread_cond_init should return a value
>>     
>>     This value is not checked, but it must return to match POSIX
>> ...
>> -#define pthread_cond_init(a,b) InitializeConditionVariable((a))
>> +#define pthread_cond_init(a,b) return_0((InitializeConditionVariable((a)), 0))
>
> This is tricky and I like it.
>
> Because InitializeConditionVariable() returns void, and return_0()
> is defined as such:
>
>     static inline int return_0(int i) { return 0; }
>
> you cannot directly pass InitializeConditionVariable() to it, so you
> use a comma operator and pass 0 to return_0().  Because the type of
> the comma operator with mixed operands is the type of the rightmost
> operand, the type of "InitializeConditionVariable((a)), 0" is type
> of "0", so return_0() would happily take it as an int, and returns
> 0.
>
> This should work correctly, but it still is tricky and yucky.
>
> You may not have to use return_0(), but OK.
>
> Will queue.  Thanks.

As I do not do Windows, I was hoping somebody more clueful than
myself on the platform would give an Ack to this patch, but we saw
nothing.  I'll mark the topic for 'next'.  I do not anticipate
breakage but if there were something fishy, hopefully we will hear
quickly enough.