From bd0ca825ccc2d0e34c43c01f7cf7d9fe62f6eba4 Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Fri, 10 Feb 2023 14:38:34 +0100 Subject: [PATCH] rec: Avoid raw pointers by using a referrence wrapper inside a variant --- pdns/logger.hh | 40 ++++++++++++++++++------------------ pdns/recursordist/syncres.cc | 4 ++-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/pdns/logger.hh b/pdns/logger.hh index 2b01700382..37216584dc 100644 --- a/pdns/logger.hh +++ b/pdns/logger.hh @@ -177,32 +177,32 @@ struct LogVariant { string prefix; timeval start; - // variant cannot hold references - std::variant v; + // variant cannot hold references directly, use a wrapper + std::variant, std::reference_wrapper> v; }; using OptLog = std::optional; void addTraceTS(const timeval& start, ostringstream& str); -#define VLOG(log, x) \ - if (log) { \ - if (std::holds_alternative((log)->v)) { \ - *std::get(log->v) << Logger::Warning << (log)->prefix << x; \ - } \ - else if (std::holds_alternative((log)->v)) { \ - addTraceTS((log)->start, *std::get((log)->v)); \ - *std::get((log)->v) << (log)->prefix << x; \ - } \ +#define VLOG(log, x) \ + if (log) { \ + if (std::holds_alternative>((log)->v)) { \ + std::get>((log)->v).get() << Logger::Warning << (log)->prefix << x; \ + } \ + else if (std::holds_alternative>((log)->v)) { \ + addTraceTS((log)->start, std::get>((log)->v).get()); \ + std::get>((log)->v).get() << (log)->prefix << x; \ + } \ } -#define VLOG_NO_PREFIX(log, x) \ - if (log) { \ - if (std::holds_alternative((log)->v)) { \ - *std::get(log->v) << Logger::Warning << x; \ - } \ - else if (std::holds_alternative((log)->v)) { \ - addTraceTS((log)->start, *std::get((log)->v)); \ - *std::get((log)->v) << x; \ - } \ +#define VLOG_NO_PREFIX(log, x) \ + if (log) { \ + if (std::holds_alternative>((log)->v)) { \ + std::get>((log)->v).get() << Logger::Warning << x; \ + } \ + else if (std::holds_alternative>((log)->v)) { \ + addTraceTS((log)->start, std::get>((log)->v).get()); \ + std::get>((log)->v).get() << x; \ + } \ } diff --git a/pdns/recursordist/syncres.cc b/pdns/recursordist/syncres.cc index ebdfff8ac0..2d6c5b8671 100644 --- a/pdns/recursordist/syncres.cc +++ b/pdns/recursordist/syncres.cc @@ -489,10 +489,10 @@ OptLog SyncRes::LogObject(const string& prefix) { OptLog ret; if (d_lm == Log) { - ret = {prefix, d_fixednow, &g_log}; + ret = {prefix, d_fixednow, g_log}; } else if (d_lm == Store) { - ret = {prefix, d_fixednow, &d_trace}; + ret = {prefix, d_fixednow, d_trace}; } return ret; } -- 2.47.2