forked from bblanchon/ArduinoJson
Fixed undefined behavior in Prettyfier
and Print
(issue #354)
This commit is contained in:
@ -6,6 +6,7 @@ HEAD
|
|||||||
|
|
||||||
* Fixed `array[idx].as<JsonVariant>()` and `object[key].as<JsonVariant>()`
|
* Fixed `array[idx].as<JsonVariant>()` and `object[key].as<JsonVariant>()`
|
||||||
* Fixed return value of `JsonObject::set()` (issue #350)
|
* Fixed return value of `JsonObject::set()` (issue #350)
|
||||||
|
* Fixed undefined behavior in `Prettyfier` and `Print` (issue #354)
|
||||||
|
|
||||||
v5.6.6
|
v5.6.6
|
||||||
------
|
------
|
||||||
|
@ -66,28 +66,46 @@ class Prettyfier : public Print {
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t writeBlockClose(uint8_t c) {
|
size_t writeBlockClose(uint8_t c) {
|
||||||
return unindentIfNeeded() + _sink.write(c);
|
size_t n = 0;
|
||||||
|
n += unindentIfNeeded();
|
||||||
|
n += _sink.write(c);
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t writeBlockOpen(uint8_t c) {
|
size_t writeBlockOpen(uint8_t c) {
|
||||||
return indentIfNeeded() + _sink.write(c);
|
size_t n = 0;
|
||||||
|
n += indentIfNeeded();
|
||||||
|
n += _sink.write(c);
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t writeColon() {
|
size_t writeColon() {
|
||||||
return _sink.write(':') + _sink.write(' ');
|
size_t n = 0;
|
||||||
|
n += _sink.write(':');
|
||||||
|
n += _sink.write(' ');
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t writeComma() {
|
size_t writeComma() {
|
||||||
return _sink.write(',') + _sink.println();
|
size_t n = 0;
|
||||||
|
n += _sink.write(',');
|
||||||
|
n += _sink.println();
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t writeQuoteOpen() {
|
size_t writeQuoteOpen() {
|
||||||
_inString = true;
|
_inString = true;
|
||||||
return indentIfNeeded() + _sink.write('"');
|
size_t n = 0;
|
||||||
|
n += indentIfNeeded();
|
||||||
|
n += _sink.write('"');
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t writeNormalChar(uint8_t c) {
|
size_t writeNormalChar(uint8_t c) {
|
||||||
return indentIfNeeded() + _sink.write(c);
|
size_t n = 0;
|
||||||
|
n += indentIfNeeded();
|
||||||
|
n += _sink.write(c);
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t indentIfNeeded() {
|
size_t indentIfNeeded() {
|
||||||
|
@ -28,7 +28,12 @@ class Print {
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t println() { return write('\r') + write('\n'); }
|
size_t println() {
|
||||||
|
size_t n = 0;
|
||||||
|
n += write('\r');
|
||||||
|
n += write('\n');
|
||||||
|
return n;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user