diff --git a/src/threads.h b/src/threads.h index 93251ba6644bcb59a9b90d58d7defb73db1d17f8..d89c7cd2a65e5943d6cce280385452ce6bdd2ed4 100644 --- a/src/threads.h +++ b/src/threads.h @@ -230,22 +230,25 @@ struct thread_state { int low_make_buf_space = 0, pop_n_elems = 0; \ int push_sp_mark = 0, pop_sp_mark = 0 -#define REVEAL_GLOBAL_VARIABLES() } while(0) +/* Note that the semi-colon below is needed to add an empty statement + * in case there is a label before the macro. + */ +#define REVEAL_GLOBAL_VARIABLES() ; } while(0) #else /* DEBUG */ #define HIDE_GLOBAL_VARIABLES() #define REVEAL_GLOBAL_VARIABLES() #endif /* DEBUG */ -#define THREADS_ALLOW() \ - do {\ +#define THREADS_ALLOW() do { \ struct thread_state *_tmp=(struct thread_state *)thread_id->storage; \ if(num_threads > 1 && !threads_disabled) { \ SWAP_OUT_THREAD(_tmp); \ THREADS_FPRINTF((stderr, "THREADS_ALLOW() %s:%d t:%08x\n", \ __FILE__, __LINE__, (unsigned int)_tmp->thread_id)); \ mt_unlock(& interpreter_lock); \ - } else {} HIDE_GLOBAL_VARIABLES() + } else {} \ + HIDE_GLOBAL_VARIABLES() #define THREADS_DISALLOW() \ REVEAL_GLOBAL_VARIABLES(); \