Paul Eggert wrote:
> -# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0
> +# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) \
> +    ((void) (struct { void (*prepare_func) (void); \
> +                      void (*parent_func) (void); \
> +                      void (*child_func) (void); }) \
> +     {PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC}, 0)

I have a hard time understanding this definition, because it's not well
indented.

> +# define gl_thread_exit(RETVAL) ((int) {RETVAL}, (void) 0)

The first part of this compound statement is not of type (void),
therefore it may trigger a gcc warning, right?

I'm therefore applying this follow-up.


2026-04-28  Bruno Haible  <[email protected]>

        thread: Improve no-op macros.
        * lib/glthread/thread.h (glthread_atfork, glthread_create,
        glthread_sigmask, glthread_join): Improve indentation.
        (gl_thread_exit): Simplify.

diff --git a/lib/glthread/thread.h b/lib/glthread/thread.h
index ad872f172b..f830657669 100644
--- a/lib/glthread/thread.h
+++ b/lib/glthread/thread.h
@@ -118,7 +118,8 @@ extern _Noreturn void gl_thread_exit (void *return_value);
     ((void) (struct { void (*prepare_func) (void); \
                       void (*parent_func) (void); \
                       void (*child_func) (void); }) \
-     {PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC}, 0)
+            { PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC }, \
+     0)
 
 # ifdef __cplusplus
 }
@@ -248,7 +249,8 @@ extern const gl_thread_t gl_null_thread;
      ((void) (struct { void (*prepare_func) (void); \
                        void (*parent_func) (void); \
                        void (*child_func) (void); }) \
-     {PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC}, 0)
+             { PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC }, \
+      0)
 # endif
 
 # ifdef __cplusplus
@@ -278,7 +280,8 @@ typedef glwthread_thread_t gl_thread_t;
 # define glthread_sigmask(HOW, SET, OSET) \
     /* unsupported */ \
     ((void) (struct { int how; sigset_t const *set; sigset_t *oset; }) \
-     {HOW, SET, OSET}, 0)
+            { HOW, SET, OSET }, \
+     0)
 # define glthread_join(THREAD, RETVALP) \
     glwthread_thread_join (THREAD, RETVALP)
 # define gl_thread_self() \
@@ -291,7 +294,8 @@ typedef glwthread_thread_t gl_thread_t;
     ((void) (struct { void (*prepare_func) (void); \
                       void (*parent_func) (void); \
                       void (*child_func) (void); }) \
-     {PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC}, 0)
+            { PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC }, \
+     0)
 
 # ifdef __cplusplus
 }
@@ -310,22 +314,27 @@ typedef int gl_thread_t;
     ((void) (struct { gl_thread_t *threadp; \
                       void *(*func) (void *); \
                       void *arg; }) \
-     {THREADP, FUNC, ARG}, ENOSYS)
+            { THREADP, FUNC, ARG }, \
+     ENOSYS)
 # define glthread_sigmask(HOW, SET, OSET) \
     ((void) (struct { int how; sigset_t const *set; sigset_t *oset; }) \
-     {HOW, SET, OSET}, 0)
+            { HOW, SET, OSET }, \
+     0)
 # define glthread_join(THREAD, RETVALP) \
     ((void) (struct { gl_thread_t thread; void **retvalp; }) \
-     {THREAD, RETVALP}, 0)
+            { THREAD, RETVALP }, \
+     0)
 # define gl_thread_self() 0
 # define gl_thread_self_pointer() \
     ((void *) gl_thread_self ())
-# define gl_thread_exit(RETVAL) ((int) {RETVAL}, (void) 0)
+# define gl_thread_exit(RETVAL) \
+    ((void) (int) { RETVAL })
 # define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) \
     ((void) (struct { void (*prepare_func) (void); \
                       void (*parent_func) (void); \
                       void (*child_func) (void); }) \
-     {PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC}, 0)
+            { PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC }, \
+     0)
 
 #endif
 




Reply via email to