]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Add !(...) to BUG() log messages
authorNick Mathewson <nickm@torproject.org>
Wed, 7 Sep 2016 00:59:07 +0000 (20:59 -0400)
committerNick Mathewson <nickm@torproject.org>
Wed, 7 Sep 2016 01:00:51 +0000 (21:00 -0400)
They use the same code as reporting assertion failures, so we should
invert the sense of what we're "asserting".

Fixes bug 20093.

changes/bug20093 [new file with mode: 0644]
src/common/util_bug.h

diff --git a/changes/bug20093 b/changes/bug20093
new file mode 100644 (file)
index 0000000..ef32601
--- /dev/null
@@ -0,0 +1,4 @@
+  o Minor bugfixes (logging):
+    - When logging a message from the BUG() macro, be explicit about what
+      we were asserting. Previously we were confusing what we were asserting
+      with what the bug was. Fixes bug 20093; bugfix on 0.2.9.1-alpha.
index 3f77e0a99efee11330994ea3f81990d5b7d7b60c..8b85d472b6447d750e7f2e50c9545d49aea9b7f7 100644 (file)
@@ -65,7 +65,8 @@
 #define tor_assert_nonfatal_once(cond) tor_assert((cond))
 #define BUG(cond)                                                       \
   (PREDICT_UNLIKELY(cond) ?                                             \
-   (tor_assertion_failed_(SHORT_FILE__,__LINE__,__func__,#cond), abort(), 1) \
+   (tor_assertion_failed_(SHORT_FILE__,__LINE__,__func__,"!("#cond")"), \
+    abort(), 1)                                                         \
    : 0)
 #elif defined(TOR_UNIT_TESTS) && defined(DISABLE_ASSERTS_IN_UNIT_TESTS)
 #define tor_assert_nonfatal_unreached() STMT_NIL
   STMT_END
 #define BUG(cond)                                                       \
   (PREDICT_UNLIKELY(cond) ?                                             \
-   (tor_bug_occurred_(SHORT_FILE__,__LINE__,__func__,#cond,0), 1)       \
+   (tor_bug_occurred_(SHORT_FILE__,__LINE__,__func__,"!("#cond")",0), 1) \
    : 0)
 #endif
 
 #ifdef __GNUC__
 #define IF_BUG_ONCE__(cond,var)                                         \
-  if (( {                                                                \
+  if (( {                                                               \
       static int var = 0;                                               \
       int bool_result = (cond);                                         \
       if (PREDICT_UNLIKELY(bool_result) && !var) {                      \
         var = 1;                                                        \
-        tor_bug_occurred_(SHORT_FILE__, __LINE__, __func__, #cond, 1);  \
+        tor_bug_occurred_(SHORT_FILE__, __LINE__, __func__,             \
+                          "!("#cond")", 1);                             \
       }                                                                 \
       PREDICT_UNLIKELY(bool_result); } ))
 #else
   if (PREDICT_UNLIKELY(cond)) ?                                         \
       (var ? 1 :                                                        \
        (var=1,                                                          \
-        tor_bug_occurred_(SHORT_FILE__, __LINE__, __func__, #cond, 1),  \
+        tor_bug_occurred_(SHORT_FILE__, __LINE__, __func__,             \
+                           "!("#cond")", 1),                            \
         1))                                                             \
       : 0)
 #endif