Don't return local copy of std::string in AnyScalar::bufferUnsafe
This commit is contained in:
@@ -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<std::string>().c_str();
|
||||
return ref<std::string>().c_str();
|
||||
} else {
|
||||
return _wrap.blob;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user