PThread Win32 problem with pthread_cleanup_push / pop
Ross Johnson
rpj@ise.canberra.edu.au
Sun Oct 31 00:15:00 GMT 2004
No no. These macros are supposed to form a pair, so that together they
form the start and end of the same block.
Ross
Dany Joly wrote:
> Hi,
>
> I am unable to compile a VC++project (with .NET 2003 and 6.0) that
> uses the pthread_cleanup_push and pthread_cleanup_pop macro defined in
> pthread.h without replacing the following code at line 686 of pthread.h:
>
> Previous ( '}' seems to be missing):
>
> #ifdef __CLEANUP_C
>
> /*
> * C implementation of PThreads cancel cleanup
> */
>
> #define pthread_cleanup_push( _rout, _arg ) \
> { \
> ptw32_cleanup_t _cleanup; \
> \
> ptw32_push_cleanup( &_cleanup, (ptw32_cleanup_callback_t)
> (_rout), (_arg) ); \
>
> #define pthread_cleanup_pop( _execute ) \
> (void) ptw32_pop_cleanup( _execute ); \
> }
>
> #else /* __CLEANUP_C */
>
>
> New (only added '}' at the end of the macro):
>
> #ifdef __CLEANUP_C
>
> /*
> * C implementation of PThreads cancel cleanup
> */
>
> #define pthread_cleanup_push( _rout, _arg ) \
> { \
> ptw32_cleanup_t _cleanup; \
> \
> ptw32_push_cleanup( &_cleanup, (ptw32_cleanup_callback_t)
> (_rout), (_arg) ); \
> }
> #define pthread_cleanup_pop( _execute ) \
> { \
> (void) ptw32_pop_cleanup( _execute ); \
> }
>
> #else /* __CLEANUP_C */
>
>
> I compared the header with older versions from 2002 and this has been
> unchanged for 2 years. Is it really a bug or something I don't
> understand?
>
>
> Thank you,
> Dany
>
>
More information about the Pthreads-win32
mailing list