Fixed duplication of char*

This commit is contained in:
Benoit Blanchon
2018-08-22 14:37:17 +02:00
parent 7683667b3c
commit 6d290bd001
25 changed files with 601 additions and 531 deletions

View File

@ -127,23 +127,28 @@ class JsonVariant : public Internals::JsonVariantBase<JsonVariant> {
}
}
// set(char*)
template <typename T>
bool set(T *value,
typename Internals::enable_if<Internals::IsString<T *>::value>::type
* = 0) {
if (!_data) return false;
const char *dup = Internals::makeString(value).save(_buffer);
if (dup) {
_data->setString(dup);
return true;
} else {
_data->setNull();
return false;
}
}
// set(const char*);
// set(const char[n]); // VLA
bool set(const char *value) {
if (!_data) return false;
_data->setString(value);
return true;
}
// set(const unsigned char*);
// set(const unsigned char[n]); // VLA
bool set(const unsigned char *value) {
return set(reinterpret_cast<const char *>(value));
}
// set(const signed char*);
// set(const signed char[n]); // VLA
bool set(const signed char *value) {
return set(reinterpret_cast<const char *>(value));
}
bool set(const JsonVariant &value) {
if (!_data) return false;