]> mj.ucw.cz Git - libucw.git/commitdiff
If not debugging, compile at least ASSERT(0) as call to an unreachable
authorMartin Mares <mj@ucw.cz>
Tue, 20 Aug 2002 19:04:54 +0000 (19:04 +0000)
committerMartin Mares <mj@ucw.cz>
Tue, 20 Aug 2002 19:04:54 +0000 (19:04 +0000)
function. (Avoid unassigned variable warnings.)

lib/lib.h
lib/log.c

index ad19f505f38ea191ac9e34406b66d7d8db63d368..c1709ea21a32b05c8d453b89a6946d6dc2906450 100644 (file)
--- a/lib/lib.h
+++ b/lib/lib.h
 
 void log(unsigned int cat, const char *msg, ...) __attribute__((format(printf,2,3)));
 void die(byte *, ...) NONRET;
-void assert_failed(char *assertion, char *file, int line) NONRET;
 void log_init(byte *);
 void log_file(byte *);
 void log_fork(void);
 
 #ifdef DEBUG
+void assert_failed(char *assertion, char *file, int line) NONRET;
 #define ASSERT(x) do { if (!(x)) assert_failed(#x, __FILE__, __LINE__); } while(0)
 #else
-#define ASSERT(x) do { } while(0)
+void assert_failed(void) NONRET;
+#define ASSERT(x) do { if (__builtin_constant_p(x) && !(x)) assert_failed(); } while(0)
 #endif
 
 #ifdef LOCAL_DEBUG
index e25476b673362b58721857a8783e0e8358b13b2d..bcbce64b6115e010059e1788e16070f3f367e63a 100644 (file)
--- a/lib/log.c
+++ b/lib/log.c
@@ -96,12 +96,20 @@ die(byte *msg, ...)
   exit(1);
 }
 
+#ifdef DEBUG
 void
 assert_failed(char *assertion, char *file, int line)
 {
   log(L_FATAL, "Assertion `%s' failed at %s:%d", assertion, file, line);
   abort();
 }
+#else
+void
+assert_failed(void)
+{
+  die("Internal error: Assertion failed.");
+}
+#endif
 
 static byte *
 log_basename(byte *n)