message: Work around gcc compiler bug
  * It complains that there is switch fallthrough after an unconditional return,
  when it's inside a do{}while(0). Simplifying the while condition seems to
  address it.
diff: @@ -58,32 +58,32 @@ DECLARE_REFLECTION_STRUCT(RDResult);
  #define RETURN_ERROR_RESULT_INTERNAL(code, msg, ...) \
  do \
  { \
  - RDResult res##__LINE__(code, StringFormat::Fmt(STRING_LITERAL(msg), __VA_ARGS__)); \
  - RDCERR("%s", res##__LINE__.message.c_str()); \
  - return res##__LINE__; \
  - } while((void)0, 0)
  + RDResult CONCAT(res, __LINE__)(code, StringFormat::Fmt(STRING_LITERAL(msg), __VA_ARGS__)); \
  + RDCERR("%s", CONCAT(res, __LINE__).message.c_str()); \
  + return CONCAT(res, __LINE__); \
  + } while(0)
  #define SET_ERROR_RESULT_INTERNAL(res, code, msg, ...) \
  do \
  { \
  res = RDResult(code, StringFormat::Fmt(STRING_LITERAL(msg), __VA_ARGS__)); \
  RDCERR("%s", res.message.c_str()); \
  - } while((void)0, 0)
  + } while(0)
  #define RETURN_WARNING_RESULT_INTERNAL(code, msg, ...) \
  do \
  { \
  - RDResult res##__LINE__(code, StringFormat::Fmt(STRING_LITERAL(msg), __VA_ARGS__)); \
  - RDCWARN("%s", res##__LINE__.message.c_str()); \
  - return res##__LINE__; \
  - } while((void)0, 0)
  + RDResult CONCAT(res, __LINE__)(code, StringFormat::Fmt(STRING_LITERAL(msg), __VA_ARGS__)); \
  + RDCWARN("%s", CONCAT(res, __LINE__).message.c_str()); \
  + return CONCAT(res, __LINE__); \
  + } while(0)
  #define SET_WARNING_RESULT_INTERNAL(res, code, msg, ...) \
  do \
  { \
  res = RDResult(code, StringFormat::Fmt(STRING_LITERAL(msg), __VA_ARGS__)); \
  RDCWARN("%s", res.message.c_str()); \
  - } while((void)0, 0)
  + } while(0)
  // VS automatically elides any trailing comma if there are no arguments above. GCC/Clang are
  // stricter and may fail, so we add an extra 0 since it won't get processed by the format anyway
  