From: Keir Fraser Date: Thu, 13 May 2010 11:21:16 +0000 (+0100) Subject: xenstore: Fix cleanup_pop() definition for some (buggy) pthread.h headers. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~12168 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b4dee233da476f498b6aa6b18e21909d3c8db66d;p=xen.git xenstore: Fix cleanup_pop() definition for some (buggy) pthread.h headers. Signed-off-by: Keir Fraser --- diff --git a/tools/xenstore/xs.c b/tools/xenstore/xs.c index 53e3d44345..7e3d9c4b63 100644 --- a/tools/xenstore/xs.c +++ b/tools/xenstore/xs.c @@ -85,8 +85,14 @@ struct xs_handle { #define mutex_unlock(m) pthread_mutex_unlock(m) #define condvar_signal(c) pthread_cond_signal(c) #define condvar_wait(c,m,hnd) pthread_cond_wait(c,m) -#define cleanup_push(f, a) pthread_cleanup_push((void (*)(void *))(f), (void *)(a)) -#define cleanup_pop(run) pthread_cleanup_pop(run) +#define cleanup_push(f, a) \ + pthread_cleanup_push((void (*)(void *))(f), (void *)(a)) +/* + * Some definitions of pthread_cleanup_pop() are a macro starting with an + * end-brace. GCC then complains if we immediately precede that with a label. + * Hence we insert a dummy statement to appease the compiler in this situation. + */ +#define cleanup_pop(run) ((void)0); pthread_cleanup_pop(run) static void *read_thread(void *arg);