drop `do{}while(0)` idiom
Rationale:
* http://stackoverflow.com/questions/154136/do-while-and-if-else-statements-in-c-c-macros/154138#154138
But Visual Studio issues a warning: `warning C4127: conditional expression is constant`
* http://stackoverflow.com/questions/1946445/c-c-how-to-use-the-do-while0-construct-without-compiler-warnings-like-c412
diff --git a/include/json/assertions.h b/include/json/assertions.h
index a88ac0a..d5fd661 100644
--- a/include/json/assertions.h
+++ b/include/json/assertions.h
@@ -16,11 +16,15 @@
#if JSON_USE_EXCEPTION
#include <stdexcept>
#define JSON_ASSERT(condition) \
- if (!(condition)) {throw std::logic_error( "assert json failed" );} // @todo <= add detail about condition in exception
-#define JSON_FAIL_MESSAGE(message) do{std::ostringstream oss; oss << message; throw std::logic_error(oss.str());}while(0)
+ {if (!(condition)) {throw std::logic_error( "assert json failed" );}} // @todo <= add detail about condition in exception
+#define JSON_FAIL_MESSAGE(message) \
+ { \
+ std::ostringstream oss; oss << message; \
+ throw std::logic_error(oss.str()); \
+ }
//#define JSON_FAIL_MESSAGE(message) throw std::logic_error(message)
#else // JSON_USE_EXCEPTION
-#define JSON_ASSERT(condition) assert(condition);
+#define JSON_ASSERT(condition) assert(condition)
// The call to assert() will show the failure message in debug builds. In
// release bugs we abort, for a core-dump or debugger.