summaryrefslogtreecommitdiff
path: root/src/log.c
diff options
context:
space:
mode:
authorMichal Schmidt <mschmidt@redhat.com>2012-01-17 12:05:33 +0100
committerMichal Schmidt <mschmidt@redhat.com>2012-01-17 12:34:53 +0100
commitb7f336383dc8ba58f720adb4c1d218348bf57e54 (patch)
tree525625511aacebb21dea18cf3156cd0c6c8c7dc5 /src/log.c
parent2b7dec8661029fd531b3818ca5a5470fa038751c (diff)
log: make asserts cheaper
On my x86_64 this shrinks the size of .text by 53 KB (7 %).
Diffstat (limited to 'src/log.c')
-rw-r--r--src/log.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/log.c b/src/log.c
index 04e90eb20..f65e8d100 100644
--- a/src/log.c
+++ b/src/log.c
@@ -618,18 +618,13 @@ int log_meta(
return r;
}
-void log_assert(
- const char*file,
- int line,
- const char *func,
- const char *format, ...) {
-
+_noreturn_ static void log_assert(const char *text, const char *file, int line, const char *func, const char *format) {
static char buffer[LINE_MAX];
- va_list ap;
- va_start(ap, format);
- vsnprintf(buffer, sizeof(buffer), format, ap);
- va_end(ap);
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+ snprintf(buffer, sizeof(buffer), format, text, file, line, func);
+#pragma GCC diagnostic pop
char_array_0(buffer);
log_abort_msg = buffer;
@@ -638,6 +633,14 @@ void log_assert(
abort();
}
+void log_assert_failed(const char *text, const char *file, int line, const char *func) {
+ log_assert(text, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Aborting.");
+}
+
+void log_assert_failed_unreachable(const char *text, const char *file, int line, const char *func) {
+ log_assert(text, file, line, func, "Code should not be reached '%s' at %s:%u, function %s(). Aborting.");
+}
+
int log_set_target_from_string(const char *e) {
LogTarget t;