]> granicus.if.org Git - esp-idf/commitdiff
lwip: Make LWIP_ERROR behave as if assertions were off, even if they are on
authorAngus Gratton <angus@espressif.com>
Tue, 27 Jun 2017 08:36:54 +0000 (18:36 +1000)
committerAngus Gratton <gus@projectgus.com>
Tue, 27 Jun 2017 08:36:54 +0000 (18:36 +1000)
components/lwip/include/lwip/port/arch/cc.h

index 2b182d641091493f89e6d92faf1a3701048dc114..cba0b365ea2658d1315465de29dd7b0b77043206 100644 (file)
@@ -37,6 +37,7 @@
 #include <stdint.h>
 #include <errno.h>
 #include <assert.h>
+#include <stdio.h>
 
 #include "arch/sys_arch.h"
 
@@ -73,7 +74,21 @@ typedef int sys_prot_t;
 
 #ifdef NDEBUG
 #define LWIP_NOASSERT
-#endif
-//#define LWIP_ERROR
+#else // Assertions enabled
+
+// If assertions are on, the default LWIP_ERROR handler behaviour is to
+// abort w/ an assertion failure. Don't do this, instead just print the error (if LWIP_DEBUG is set)
+// and run the handler (same as the LWIP_ERROR behaviour if LWIP_NOASSERT is set).
+#ifdef LWIP_DEBUG
+#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \
+  puts(message); handler;}} while(0)
+#else
+// If LWIP_DEBUG is not set, return the error silently (default LWIP behaviour, also.)
+#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \
+  handler;}} while(0)
+#endif // LWIP_DEBUG
+
+#endif /* NDEBUG */
+
 
 #endif /* __ARCH_CC_H__ */