aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-07-19 13:40:20 -0400
committerNick Mathewson <nickm@torproject.org>2013-07-19 13:40:20 -0400
commitf6d8bc9389db72dc654560d0f86fd3edd3b14934 (patch)
tree42ff03d119ebcba66978dfdeb9d9d6a8bbd3d729
parent5343ee1a06ebb959fc77753898015186b94a5daa (diff)
downloadtor-f6d8bc9389db72dc654560d0f86fd3edd3b14934.tar
tor-f6d8bc9389db72dc654560d0f86fd3edd3b14934.tar.gz
Refactor the assertion-failure code into a function
-rw-r--r--src/common/util.c15
-rw-r--r--src/common/util.h14
2 files changed, 21 insertions, 8 deletions
diff --git a/src/common/util.c b/src/common/util.c
index 25ea13371..814eb1379 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -94,6 +94,20 @@
#endif
/* =====
+ * Assertion helper.
+ * ===== */
+/** Helper for tor_assert: report the assertion failure. */
+void
+tor_assertion_failed_(const char *fname, unsigned int line,
+ const char *func, const char *expr)
+{
+ log_err(LD_BUG, "%s:%u: %s: Assertion %s failed; aborting.",
+ fname, line, func, expr);
+ fprintf(stderr,"%s:%u: %s: Assertion %s failed; aborting.\n",
+ fname, line, func, expr);
+}
+
+/* =====
* Memory management
* ===== */
#ifdef USE_DMALLOC
@@ -5057,4 +5071,3 @@ tor_weak_random_range(tor_weak_rng_t *rng, int32_t top)
} while (result >= top);
return result;
}
-
diff --git a/src/common/util.h b/src/common/util.h
index f6d828796..1c92c4f5f 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -48,13 +48,13 @@
/** Like assert(3), but send assertion failures to the log as well as to
* stderr. */
#define tor_assert(expr) STMT_BEGIN \
- if (PREDICT_UNLIKELY(!(expr))) { \
- log_err(LD_BUG, "%s:%d: %s: Assertion %s failed; aborting.", \
- SHORT_FILE__, __LINE__, __func__, #expr); \
- fprintf(stderr,"%s:%d %s: Assertion %s failed; aborting.\n", \
- SHORT_FILE__, __LINE__, __func__, #expr); \
- abort(); \
- } STMT_END
+ if (PREDICT_UNLIKELY(!(expr))) { \
+ tor_assertion_failed_(SHORT_FILE__, __LINE__, __func__, #expr); \
+ abort(); \
+ } STMT_END
+
+void tor_assertion_failed_(const char *fname, unsigned int line,
+ const char *func, const char *expr);
/* If we're building with dmalloc, we want all of our memory allocation
* functions to take an extra file/line pair of arguments. If not, not.