forked from bblanchon/ArduinoJson
Added a test that appends a string longer that the capacity of the builder
This commit is contained in:
@ -10,9 +10,12 @@ void StringBuilder::append(const char* s)
|
||||
{
|
||||
char* tail = buffer + length;
|
||||
|
||||
strncpy(tail, s, capacity - length);
|
||||
while (*s && length<capacity)
|
||||
{
|
||||
buffer[length++] = *s++;
|
||||
}
|
||||
|
||||
length += strlen(tail);
|
||||
buffer[length] = 0;
|
||||
}
|
||||
|
||||
void StringBuilder::appendEscaped(const char* s)
|
||||
@ -24,7 +27,7 @@ void StringBuilder::appendEscaped(const char* s)
|
||||
// keep one slot for the end quote
|
||||
capacity--;
|
||||
|
||||
while (*s && length<capacity)
|
||||
while (*s && length < capacity)
|
||||
{
|
||||
switch (*s)
|
||||
{
|
||||
|
@ -13,7 +13,7 @@ class StringBuilder
|
||||
{
|
||||
public:
|
||||
StringBuilder(char* buf, size_t size)
|
||||
: buffer(buf), capacity(size), length(0)
|
||||
: buffer(buf), capacity(size-1), length(0)
|
||||
{
|
||||
buffer[0] = 0;
|
||||
}
|
||||
@ -24,7 +24,7 @@ public:
|
||||
|
||||
private:
|
||||
char* buffer;
|
||||
int capacity;
|
||||
int length;
|
||||
size_t capacity;
|
||||
size_t length;
|
||||
};
|
||||
|
||||
|
@ -42,6 +42,12 @@ namespace JsonGeneratorTests
|
||||
assertResultIs("ABCDEFGH");
|
||||
}
|
||||
|
||||
TEST_METHOD(AppendOverCapacity)
|
||||
{
|
||||
append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
assertResultIs("ABCDEFGHIJKLMNO");
|
||||
}
|
||||
|
||||
TEST_METHOD(AppendSpecialChars)
|
||||
{
|
||||
append("\\\"\/\b\f\n\r");
|
||||
|
Reference in New Issue
Block a user