From d8e39ed16a0a70835c8c8df4ca26d0bd6d859185 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sun, 8 Mar 2020 18:40:16 +0100 Subject: [PATCH] Fix returning buffers from std::visit Last time I tried it references somehow didn't work. --- src/common/communication.h | 6 +++--- src/common/logging.cpp | 13 ++++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/common/communication.h b/src/common/communication.h index 6966428b..c5ef24d1 100644 --- a/src/common/communication.h +++ b/src/common/communication.h @@ -165,11 +165,11 @@ void passthrough_event(boost::asio::local::stream_protocol::socket& socket, } void* data = std::visit( - overload{[&](std::nullptr_t) -> void* { return nullptr; }, - [&](std::string s) -> void* { + overload{[&](const std::nullptr_t&) -> void* { return nullptr; }, + [&](const std::string& s) -> void* { return const_cast(s.c_str()); }, - [&](std::array buffer) -> void* { + [&](std::array& buffer) -> void* { return buffer.data(); }}, event.payload); diff --git a/src/common/logging.cpp b/src/common/logging.cpp index e14d235d..77db395c 100644 --- a/src/common/logging.cpp +++ b/src/common/logging.cpp @@ -142,13 +142,16 @@ void Logger::log_event(bool is_dispatch, << ", option = " << option << ", data = "; std::visit( - overload{[&](std::nullptr_t) { message << ""; }, - [&](std::string s) { message << "\"" << s << "\""; }, - [&](std::array) { - message << ""; - }}, + overload{ + [&](const std::nullptr_t&) { message << ""; }, + [&](const std::string& s) { message << "\"" << s << "\""; }, + [&](const std::array&) { + message << ""; + }}, payload); + message << ")"; + log(message.str()); } }