Author: tfaber Date: Sat Nov 16 15:00:11 2013 New Revision: 61008
URL: http://svn.reactos.org/svn/reactos?rev=61008&view=rev Log: [DDK][XDK] - Do not evaluate the ASSERT macro's parameter before stringifying it CORE-7588 #resolve
Modified: trunk/reactos/include/ddk/wdm.h trunk/reactos/include/xdk/rtlfuncs.h
Modified: trunk/reactos/include/ddk/wdm.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/wdm.h?rev=61008... ============================================================================== --- trunk/reactos/include/ddk/wdm.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/wdm.h [iso-8859-1] Sat Nov 16 15:00:11 2013 @@ -11010,14 +11010,27 @@ DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)
#define RTL_SOFT_VERIFYMSG(msg, exp) \ - (VOID)((!(exp)) ? \ + ((!(exp)) ? \ DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE)
-#define ASSERT(exp) ((void)RTL_VERIFY(exp)) -#define ASSERTMSG(msg, exp) ((void)RTL_VERIFYMSG(msg, exp)) - -#define RTL_SOFT_ASSERT(exp) ((void)RTL_SOFT_VERIFY(exp)) -#define RTL_SOFT_ASSERTMSG(msg, exp) ((void)RTL_SOFT_VERIFYMSG(msg, exp)) +/* The ASSERTs must be cast to void to avoid warnings about unused results. + * We also cannot invoke the VERIFY versions because the indirection messes + * with stringify. */ +#define ASSERT(exp) \ + ((VOID)((!(exp)) ? \ + RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)) + +#define ASSERTMSG(msg, exp) \ + ((VOID)((!(exp)) ? \ + RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, (PCHAR)msg ), FALSE : TRUE)) + +#define RTL_SOFT_ASSERT(exp) \ + ((VOID)((!(exp)) ? \ + DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)) + +#define RTL_SOFT_ASSERTMSG(msg, exp) \ + ((VOID)((!(exp)) ? \ + DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE))
#if defined(_MSC_VER) # define __assert_annotationA(msg) __annotation(L"Debug", L"AssertFail", L ## msg)
Modified: trunk/reactos/include/xdk/rtlfuncs.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/rtlfuncs.h?rev=... ============================================================================== --- trunk/reactos/include/xdk/rtlfuncs.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/rtlfuncs.h [iso-8859-1] Sat Nov 16 15:00:11 2013 @@ -3076,14 +3076,27 @@ DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)
#define RTL_SOFT_VERIFYMSG(msg, exp) \ - (VOID)((!(exp)) ? \ + ((!(exp)) ? \ DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE)
-#define ASSERT(exp) ((void)RTL_VERIFY(exp)) -#define ASSERTMSG(msg, exp) ((void)RTL_VERIFYMSG(msg, exp)) - -#define RTL_SOFT_ASSERT(exp) ((void)RTL_SOFT_VERIFY(exp)) -#define RTL_SOFT_ASSERTMSG(msg, exp) ((void)RTL_SOFT_VERIFYMSG(msg, exp)) +/* The ASSERTs must be cast to void to avoid warnings about unused results. + * We also cannot invoke the VERIFY versions because the indirection messes + * with stringify. */ +#define ASSERT(exp) \ + ((VOID)((!(exp)) ? \ + RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)) + +#define ASSERTMSG(msg, exp) \ + ((VOID)((!(exp)) ? \ + RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, (PCHAR)msg ), FALSE : TRUE)) + +#define RTL_SOFT_ASSERT(exp) \ + ((VOID)((!(exp)) ? \ + DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)) + +#define RTL_SOFT_ASSERTMSG(msg, exp) \ + ((VOID)((!(exp)) ? \ + DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE))
#if defined(_MSC_VER) # define __assert_annotationA(msg) __annotation(L"Debug", L"AssertFail", L ## msg)