mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-06-25 01:11:35 +02:00
JsonString: change default ownership to Copied
This commit is contained in:
@ -7,6 +7,7 @@ HEAD
|
||||
* Fix support for NUL characters in `deserializeJson()`
|
||||
* Make `ElementProxy` and `MemberProxy` non-copyable
|
||||
* Change string copy policy: only string literal are stored by pointer
|
||||
* `JsonString` is now stored by copy, unless specified otherwise
|
||||
|
||||
> ### BREAKING CHANGES
|
||||
>
|
||||
|
@ -96,7 +96,7 @@ TEST_CASE("JsonString") {
|
||||
JsonString s("hello world", 5);
|
||||
|
||||
CHECK(s.size() == 5);
|
||||
CHECK(s.isLinked() == true);
|
||||
CHECK(s.isLinked() == false);
|
||||
CHECK(s == "hello");
|
||||
CHECK(s != "hello world");
|
||||
}
|
||||
|
@ -139,7 +139,8 @@ TEST_CASE("serialize MsgPack value") {
|
||||
|
||||
SECTION("str 32") {
|
||||
std::string shortest(65536, '?');
|
||||
checkVariant(JsonString(shortest.c_str(), true), // force store by pointer
|
||||
checkVariant(JsonString(shortest.c_str(),
|
||||
JsonString::Linked), // force store by pointer
|
||||
"\xDB\x00\x01\x00\x00"_s + shortest);
|
||||
}
|
||||
|
||||
|
@ -96,7 +96,7 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
|
||||
}
|
||||
|
||||
size_t visit(JsonString value) {
|
||||
ARDUINOJSON_ASSERT(value != NULL);
|
||||
ARDUINOJSON_ASSERT(!value.isNull());
|
||||
|
||||
auto n = value.size();
|
||||
|
||||
|
@ -22,10 +22,10 @@ class JsonString {
|
||||
|
||||
JsonString() : str_(nullptr, 0, true) {}
|
||||
|
||||
JsonString(const char* data, Ownership ownership = Linked)
|
||||
JsonString(const char* data, Ownership ownership = Copied)
|
||||
: str_(data, data ? ::strlen(data) : 0, ownership == Linked) {}
|
||||
|
||||
JsonString(const char* data, size_t sz, Ownership ownership = Linked)
|
||||
JsonString(const char* data, size_t sz, Ownership ownership = Copied)
|
||||
: str_(data, sz, ownership == Linked) {}
|
||||
|
||||
// Returns a pointer to the characters.
|
||||
|
@ -178,7 +178,7 @@ struct Converter<JsonString> : private detail::VariantAttorney {
|
||||
|
||||
static JsonString fromJson(JsonVariantConst src) {
|
||||
auto data = getData(src);
|
||||
return data ? data->asString() : 0;
|
||||
return data ? data->asString() : JsonString();
|
||||
}
|
||||
|
||||
static bool checkJson(JsonVariantConst src) {
|
||||
|
@ -64,7 +64,8 @@ class VariantData {
|
||||
return visit.visit(content_.asObject);
|
||||
|
||||
case VariantType::LinkedString:
|
||||
return visit.visit(JsonString(content_.asLinkedString));
|
||||
return visit.visit(
|
||||
JsonString(content_.asLinkedString, JsonString::Linked));
|
||||
|
||||
case VariantType::OwnedString:
|
||||
return visit.visit(JsonString(content_.asOwnedString->data,
|
||||
|
Reference in New Issue
Block a user