pthread_cleanup_push

Maksym Yehorov m.yegorov@gmail.com
Fri Jun 15 15:16:00 GMT 2007


Broken macro pthread_cleanup_push in glibc-2.5.

diff -Naur glibc-2.5/nptl/sysdeps/pthread/pthread.h
glibc-2.5-pthread_cleanup_push_fix/nptl/sysdeps/pthread/pthread.h
--- glibc-2.5/nptl/sysdeps/pthread/pthread.h    2006-06-05
02:59:07.000000000 +0300
+++ glibc-2.5-pthread_cleanup_push_fix/nptl/sysdeps/pthread/pthread.h
 2007-06-15 17:18:42.000000000 +0300
@@ -541,8 +541,7 @@
    pthread_cleanup_push and pthread_cleanup_pop are macros and must always
    be used in matching pairs at the same nesting level of braces.  */
 #  define pthread_cleanup_push(routine, arg) \
-  do {                                                                       \
-    __pthread_cleanup_class __clframe (routine, arg)
+  do { __pthread_cleanup_class __clframe (routine, arg); } while(0)

 /* Remove a cleanup handler installed by the matching pthread_cleanup_push.
    If EXECUTE is non-zero, the handler function is called. */


-- 
Sincerely yours,
Max Yegorov
mail-to: m.yegorov@gmail.com



More information about the Libc-alpha mailing list