From 243ca1bdeccbcd00580035db981e56bb7ec9d262 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Apr 2026 17:53:48 +0000 Subject: [PATCH] Pass std::string_view by value, fix dangling reference in ServerHandler Agent-Logs-Url: https://github.com/XRPLF/rippled/sessions/3aef40d0-f51b-484c-a5d3-43dd37d6187f Co-authored-by: mvadari <8029314+mvadari@users.noreply.github.com> --- include/xrpl/beast/rfc2616.h | 2 +- include/xrpl/json/Output.h | 4 ++-- src/libxrpl/json/Writer.cpp | 4 ++-- src/xrpld/overlay/detail/ProtocolVersion.cpp | 4 ++-- src/xrpld/overlay/detail/ProtocolVersion.h | 4 ++-- src/xrpld/rpc/detail/ServerHandler.cpp | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/xrpl/beast/rfc2616.h b/include/xrpl/beast/rfc2616.h index ff1a9d394a..6ed9e1b5f7 100644 --- a/include/xrpl/beast/rfc2616.h +++ b/include/xrpl/beast/rfc2616.h @@ -182,7 +182,7 @@ split_commas(FwdIt first, FwdIt last) template > Result -split_commas(std::string_view const& s) +split_commas(std::string_view s) { return split_commas(s.begin(), s.end()); } diff --git a/include/xrpl/json/Output.h b/include/xrpl/json/Output.h index ab910e86ca..7ca0dd69f5 100644 --- a/include/xrpl/json/Output.h +++ b/include/xrpl/json/Output.h @@ -8,12 +8,12 @@ namespace Json { class Value; -using Output = std::function; +using Output = std::function; inline Output stringOutput(std::string& s) { - return [&](std::string_view const& b) { s.append(b.data(), b.size()); }; + return [&](std::string_view b) { s.append(b.data(), b.size()); }; } /** Writes a minimal representation of a Json value to an Output in O(n) time. diff --git a/src/libxrpl/json/Writer.cpp b/src/libxrpl/json/Writer.cpp index ef2f25e1c1..98091c1fad 100644 --- a/src/libxrpl/json/Writer.cpp +++ b/src/libxrpl/json/Writer.cpp @@ -88,14 +88,14 @@ public: } void - output(std::string_view const& bytes) + output(std::string_view bytes) { markStarted(); output_(bytes); } void - stringOutput(std::string_view const& bytes) + stringOutput(std::string_view bytes) { markStarted(); std::size_t position = 0, writtenUntil = 0; diff --git a/src/xrpld/overlay/detail/ProtocolVersion.cpp b/src/xrpld/overlay/detail/ProtocolVersion.cpp index 1b43eb02af..a386b5b9bc 100644 --- a/src/xrpld/overlay/detail/ProtocolVersion.cpp +++ b/src/xrpld/overlay/detail/ProtocolVersion.cpp @@ -56,7 +56,7 @@ to_string(ProtocolVersion const& p) } std::vector -parseProtocolVersions(std::string_view const& value) +parseProtocolVersions(std::string_view value) { static boost::regex const re( "^" // start of line @@ -126,7 +126,7 @@ negotiateProtocolVersion(std::vector const& versions) } std::optional -negotiateProtocolVersion(std::string_view const& versions) +negotiateProtocolVersion(std::string_view versions) { auto const them = parseProtocolVersions(versions); diff --git a/src/xrpld/overlay/detail/ProtocolVersion.h b/src/xrpld/overlay/detail/ProtocolVersion.h index 45e1ec37c7..fd31c741ae 100644 --- a/src/xrpld/overlay/detail/ProtocolVersion.h +++ b/src/xrpld/overlay/detail/ProtocolVersion.h @@ -38,7 +38,7 @@ to_string(ProtocolVersion const& p); no duplicates and will be sorted in ascending protocol order. */ std::vector -parseProtocolVersions(std::string_view const& s); +parseProtocolVersions(std::string_view s); /** Given a list of supported protocol versions, choose the one we prefer. */ std::optional @@ -46,7 +46,7 @@ negotiateProtocolVersion(std::vector const& versions); /** Given a list of supported protocol versions, choose the one we prefer. */ std::optional -negotiateProtocolVersion(std::string_view const& versions); +negotiateProtocolVersion(std::string_view versions); /** The list of all the protocol versions we support. */ std::string const& diff --git a/src/xrpld/rpc/detail/ServerHandler.cpp b/src/xrpld/rpc/detail/ServerHandler.cpp index 6498c72af0..7627950987 100644 --- a/src/xrpld/rpc/detail/ServerHandler.cpp +++ b/src/xrpld/rpc/detail/ServerHandler.cpp @@ -230,7 +230,7 @@ ServerHandler::onHandoff( static inline Json::Output makeOutput(Session& session) { - return [&](std::string_view const& b) { session.write(b.data(), b.size()); }; + return [&](std::string_view b) { session.write(b.data(), b.size()); }; } static std::map @@ -535,7 +535,7 @@ ServerHandler::processSession( auto const iter = session->request().find("X-User"); if (iter != session->request().end()) { - auto const val = iter->value(); + auto const& val = iter->value(); return std::string_view(val.data(), val.size()); } return std::string_view{};