From 63275a70323f2535aa943e47e827ec65a7358f0e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 14 Apr 2021 13:39:14 +0200 Subject: [PATCH] basic/log: assert that %m is not used when error is not set This is only done in developer mode. It is a pretty rare occurence that we make this kind of mistake. And even if it happens, the result is just a misleading error message. So let's only do the check in non-release builds. --- src/basic/log.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/basic/log.h b/src/basic/log.h index 4b621097d4..f7785b016b 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include "macro.h" @@ -197,7 +198,12 @@ void log_assert_failed_return( _e < 0 ? _e : -EIO; \ }) -#define log_full(level, ...) (void) log_full_errno((level), 0, __VA_ARGS__) +#define log_full(level, fmt, ...) \ + ({ \ + if (BUILD_MODE_DEVELOPER) \ + assert(!strstr(fmt, "%m")); \ + (void) log_full_errno((level), 0, fmt, ##__VA_ARGS__); \ + }) int log_emergency_level(void); -- 2.25.1