Subject: Re: wrong macro definition in pthread.h
From: skaller <[email-masked]>
To: 橋 宏彰 <[email-masked]>
Cc: [email-masked]
Date: Tue, 14 Feb 2006 00:06:45 +1100

On Mon, 2006-02-13 at 21:27 +0900, 橋 宏彰 wrote:
> In cvs head.
> 
> winsup/cygwin/include/pthread.h
> 
>   #define pthread_cleanup_push(_fn, _arg) { __pthread_cleanup_handler __cleanup_handler = \
>                                            { _fn, _arg, NULL }; \
>                                            _pthread_cleanup_push( &__cleanup_handler );
>   #define pthread_cleanup_pop(_execute) _pthread_cleanup_pop( _execute ); }
> 
> incorrect '}' position.
> 

>From my man pthread_cleanup_push:

Matching  pairs of !pthread_cleanup_push! and !pthread_cleanup_pop!
must occur in the same function, at the same level of  block  nest‐
ing.   Actually,  !pthread_cleanup_push!  and !pthread_cleanup_pop!
are macros, and the expansion of !pthread_cleanup_push!  introduces
an open brace !{!  with the matching closing brace !}! being intro‐
duced by the expansion of the matching !pthread_cleanup_pop!.

SO if this is a bug .. it is shared by Linux..:)

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/