Browse Source

use idiomatic safe form for FUNLOCK macro

previously this macro used an odd if/else form instead of the more
idiomatic do/while(0), making it unsafe against omission of trailing
semicolon. the omission would make the following statement conditional
instead of producing an error.
Rich Felker 7 years ago
parent
commit
455bd82445
1 changed files with 1 additions and 1 deletions
  1. 1 1
      src/internal/stdio_impl.h

+ 1 - 1
src/internal/stdio_impl.h

@@ -9,7 +9,7 @@
 
 #define FFINALLOCK(f) ((f)->lock>=0 ? __lockfile((f)) : 0)
 #define FLOCK(f) int __need_unlock = ((f)->lock>=0 ? __lockfile((f)) : 0)
-#define FUNLOCK(f) if (__need_unlock) __unlockfile((f)); else
+#define FUNLOCK(f) do { if (__need_unlock) __unlockfile((f)); } while (0)
 
 #define F_PERM 1
 #define F_NORD 4