keep StaticString (!allocated_) for copy ctor
diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp
index 211cf35..b8d224b 100644
--- a/src/lib_json/json_value.cpp
+++ b/src/lib_json/json_value.cpp
@@ -353,10 +353,11 @@
value_.bool_ = value;
}
-Value::Value(const Value& other)
+Value::Value(Value const& other)
: type_(other.type_), allocated_(false)
,
- comments_(0), start_(other.start_), limit_(other.limit_) {
+ comments_(0), start_(other.start_), limit_(other.limit_)
+{
switch (type_) {
case nullValue:
case intValue:
@@ -366,7 +367,7 @@
value_ = other.value_;
break;
case stringValue:
- if (other.value_.string_) {
+ if (other.value_.string_ && other.allocated_) {
unsigned len;
char const* str;
decodePrefixedString(other.allocated_, other.value_.string_,
@@ -374,7 +375,7 @@
value_.string_ = duplicateAndPrefixStringValue(str, len);
allocated_ = true;
} else {
- value_.string_ = 0;
+ value_.string_ = other.value_.string_;
allocated_ = false;
}
break;