Skip to content

Commit 3104d77

Browse files
committed
Extract isTinyString()
1 parent b140e52 commit 3104d77

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/ArduinoJson/Variant/VariantData.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
1717
template <typename T>
1818
T parseNumber(const char* s);
1919

20+
template <typename T>
21+
static bool isTinyString(const T& s, size_t n) {
22+
if (n > tinyStringMaxLength)
23+
return false;
24+
bool containsNul = false;
25+
for (uint8_t i = 0; i < uint8_t(n); i++)
26+
containsNul |= !s[i];
27+
return !containsNul;
28+
}
29+
2030
class VariantData {
2131
VariantContent content_; // must be first to allow cast from array to variant
2232
VariantType type_;

src/ArduinoJson/Variant/VariantImpl.hpp

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,9 @@ inline bool VariantData::setString(TAdaptedString value,
3131
return true;
3232
}
3333

34-
if (value.size() <= tinyStringMaxLength) {
35-
uint8_t length = static_cast<uint8_t>(value.size());
36-
bool containsNul = false;
37-
for (uint8_t i = 0; i < length; i++)
38-
containsNul |= !value[i];
39-
if (!containsNul) {
40-
setTinyString(value.data(), length);
41-
return true;
42-
}
34+
if (isTinyString(value, value.size())) {
35+
setTinyString(value.data(), uint8_t(value.size()));
36+
return true;
4337
}
4438

4539
auto dup = resources->saveString(value);

0 commit comments

Comments
 (0)