From 04fcb7e38fbf00b97c65c8319648168de15ee92a Mon Sep 17 00:00:00 2001 From: JJL772 Date: Mon, 17 Jul 2023 14:58:39 -0700 Subject: [PATCH] Don't return local copy of std::string in AnyScalar::bufferUnsafe --- src/misc/anyscalar.cpp | 4 ++-- src/misc/pv/anyscalar.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/misc/anyscalar.cpp b/src/misc/anyscalar.cpp index 7072922..c140a97 100644 --- a/src/misc/anyscalar.cpp +++ b/src/misc/anyscalar.cpp @@ -31,7 +31,7 @@ AnyScalar::AnyScalar(const AnyScalar& o) } #if __cplusplus>=201103L -AnyScalar::AnyScalar(AnyScalar&& o) +AnyScalar::AnyScalar(AnyScalar&& o) noexcept :_stype(o._stype) { typedef std::string string; @@ -136,7 +136,7 @@ void AnyScalar::swap(AnyScalar& o) { } const void* AnyScalar::bufferUnsafe() const { if(_stype==pvString) { - return as().c_str(); + return ref().c_str(); } else { return _wrap.blob; } diff --git a/src/misc/pv/anyscalar.h b/src/misc/pv/anyscalar.h index 2efccae..fdf44b0 100644 --- a/src/misc/pv/anyscalar.h +++ b/src/misc/pv/anyscalar.h @@ -123,7 +123,7 @@ public: AnyScalar(const AnyScalar& o); #if __cplusplus>=201103L - AnyScalar(AnyScalar&& o); + AnyScalar(AnyScalar&& o) noexcept; #endif inline ~AnyScalar() {clear();} @@ -140,7 +140,7 @@ public: } #if __cplusplus>=201103L - inline AnyScalar& operator=(AnyScalar&& o) { + inline AnyScalar& operator=(AnyScalar&& o) noexcept { clear(); swap(o); return *this;