diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp index b8d224b..979a1bc 100644 --- a/src/lib_json/json_value.cpp +++ b/src/lib_json/json_value.cpp @@ -195,19 +195,23 @@ void Value::CommentInfo::setComment(const char* text, size_t len) { Value::CZString::CZString(ArrayIndex index) : cstr_(0), index_(index) {} Value::CZString::CZString(char const* str, unsigned length, DuplicationPolicy allocate) - : cstr_(allocate == duplicate ? duplicateStringValue(str) : str), - storage_({allocate, length}) -{} + : cstr_(allocate == duplicate ? duplicateStringValue(str) : str) +{ + storage_.policy_ = allocate; + storage_.length_ = length; +} Value::CZString::CZString(const CZString& other) : cstr_(other.storage_.policy_ != noDuplication && other.cstr_ != 0 ? duplicateStringValue(other.cstr_) - : other.cstr_), - storage_({(other.cstr_ + : other.cstr_) +{ + storage_.policy_ = (other.cstr_ ? (other.storage_.policy_ == noDuplication ? noDuplication : duplicate) - : other.storage_.policy_), other.storage_.length_}) -{} + : other.storage_.policy_); + storage_.length_ = other.storage_.length_; +} Value::CZString::~CZString() { if (cstr_ && storage_.policy_ == duplicate)