A classic idiom preventing all kinds of bad interactions with
surrounding code when the macro is expanded. Newer compilers may also
warn against empty statements of the form
{ expressions... };
where the ending ; is actually an empty statement.
https://gcc.gnu.org/onlinedocs/cpp/Swallowing-the-Semicolon.html
Signed-off-by: Antonin Décimo <[email protected]>
---
mingw-w64-libraries/winpthreads/src/barrier.h | 7 +++--
mingw-w64-libraries/winpthreads/src/cond.h | 10 ++++---
mingw-w64-libraries/winpthreads/src/misc.h | 30 ++++++++++++-------
3 files changed, 30 insertions(+), 17 deletions(-)
diff --git a/mingw-w64-libraries/winpthreads/src/barrier.h
b/mingw-w64-libraries/winpthreads/src/barrier.h
index b3e2146e7..b1d80d1bb 100644
--- a/mingw-w64-libraries/winpthreads/src/barrier.h
+++ b/mingw-w64-libraries/winpthreads/src/barrier.h
@@ -28,8 +28,11 @@
#define _PTHREAD_BARRIER_FLAG (1<<30)
-#define CHECK_BARRIER(b) { \
- if (!(b) || ( ((barrier_t *)(*b))->valid != (unsigned int)LIFE_BARRIER ) )
return EINVAL; }
+#define CHECK_BARRIER(b) \
+ do { \
+ if (!(b) || ( ((barrier_t *)(*b))->valid != (unsigned int)LIFE_BARRIER
) ) \
+ return EINVAL; \
+ } while (0)
#include "../include/semaphore.h"
diff --git a/mingw-w64-libraries/winpthreads/src/cond.h
b/mingw-w64-libraries/winpthreads/src/cond.h
index c70d31146..5e869e957 100644
--- a/mingw-w64-libraries/winpthreads/src/cond.h
+++ b/mingw-w64-libraries/winpthreads/src/cond.h
@@ -25,10 +25,12 @@
#include <windows.h>
-#define CHECK_COND(c) { \
- if (!(c) || !*c || (*c == PTHREAD_COND_INITIALIZER) \
- || ( ((cond_t *)(*c))->valid != (unsigned int)LIFE_COND ) ) \
- return EINVAL; }
+#define CHECK_COND(c) \
+ do { \
+ if (!(c) || !*c || (*c == PTHREAD_COND_INITIALIZER) \
+ || ( ((cond_t *)(*c))->valid != (unsigned int)LIFE_COND ) ) \
+ return EINVAL; \
+ } while (0)
#define LIFE_COND 0xC0BAB1FD
#define DEAD_COND 0xC0DEADBF
diff --git a/mingw-w64-libraries/winpthreads/src/misc.h
b/mingw-w64-libraries/winpthreads/src/misc.h
index 15f4c3743..fc67b009f 100644
--- a/mingw-w64-libraries/winpthreads/src/misc.h
+++ b/mingw-w64-libraries/winpthreads/src/misc.h
@@ -67,22 +67,30 @@ typedef long LONGBAG;
#define GetHandleInformation(h,f) (1)
#endif
-#define CHECK_HANDLE(h) { DWORD dwFlags; \
+#define CHECK_HANDLE(h) \
+ do { \
+ DWORD dwFlags; \
if (!(h) || ((h) == INVALID_HANDLE_VALUE) || !GetHandleInformation((h),
&dwFlags)) \
- return EINVAL; }
+ return EINVAL; \
+ } while (0)
-#define CHECK_PTR(p) if (!(p)) return EINVAL;
+#define CHECK_PTR(p) do { if (!(p)) return EINVAL; } while (0)
-#define UPD_RESULT(x,r) { int _r=(x); r = r ? r : _r; }
+#define UPD_RESULT(x,r) do { (r) = (r) ? (r) : (x); } while (0)
-#define CHECK_THREAD(t) { \
- CHECK_PTR(t); \
- CHECK_HANDLE(t->h); }
+#define CHECK_THREAD(t) \
+ do { \
+ CHECK_PTR(t); \
+ CHECK_HANDLE((t)->h); \
+ } while (0)
-#define CHECK_OBJECT(o, e) { DWORD dwFlags; \
- if (!(o)) return e; \
+#define CHECK_OBJECT(o, e) \
+ do { \
+ DWORD dwFlags; \
+ if (!(o)) return e; \
if (!((o)->h) || (((o)->h) == INVALID_HANDLE_VALUE) ||
!GetHandleInformation(((o)->h), &dwFlags)) \
- return e; }
+ return e; \
+ } while (0)
#define VALID(x) if (!(p)) return EINVAL;
@@ -94,7 +102,7 @@ static WINPTHREADS_INLINE unsigned long dwMilliSecs(unsigned
long long ms)
}
#ifndef _mm_pause
-#define _mm_pause() {__asm__ __volatile__("pause");}
+#define _mm_pause() do { __asm__ __volatile__("pause"); } while (0)
#endif
#ifndef _ReadWriteBarrier
--
2.43.0
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public