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=6100…
==============================================================================
--- 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)