BugFix-pri formatovani JSON a zkraceni textu v bufferu doslo k poskozeni
This commit is contained in:
parent
5ddb7195a9
commit
ab635dd013
@ -52,40 +52,10 @@ static void print(uint8_t severity, const char *buffer, int length)
|
|||||||
|
|
||||||
while (0 != *buffer)
|
while (0 != *buffer)
|
||||||
{
|
{
|
||||||
switch (*buffer)// uprava escape sekvenci pro JSON/HTML
|
if (*buffer > 0x1f)
|
||||||
{
|
lin[lineptr] = *buffer;
|
||||||
case '"':
|
else
|
||||||
lin[lineptr++] = '\\';
|
lin[lineptr] = '?';
|
||||||
lin[lineptr] = '"';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\\':
|
|
||||||
lin[lineptr++] = '\\';
|
|
||||||
lin[lineptr] = '\\';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '/':
|
|
||||||
lin[lineptr++] = '\\';
|
|
||||||
lin[lineptr] = '/';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '<':
|
|
||||||
strcpy_P(&lin[lineptr], PSTR("<"));
|
|
||||||
lineptr += 3;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '>':
|
|
||||||
strcpy_P(&lin[lineptr], PSTR(">"));
|
|
||||||
lineptr += 3;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
if (*buffer > 0x1f)
|
|
||||||
lin[lineptr] = *buffer;
|
|
||||||
else
|
|
||||||
lin[lineptr] = '?';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
++lineptr;
|
++lineptr;
|
||||||
++buffer;
|
++buffer;
|
||||||
}
|
}
|
||||||
@ -110,6 +80,45 @@ void trace_init(void)
|
|||||||
trace_print(TRACE_INFO, F("Trace: Starting..."));
|
trace_print(TRACE_INFO, F("Trace: Starting..."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String _getText(const char *buffer)
|
||||||
|
{
|
||||||
|
String res;
|
||||||
|
|
||||||
|
res.reserve(MAX_LINE_LEN * 4);
|
||||||
|
|
||||||
|
while (0 != *buffer)
|
||||||
|
{
|
||||||
|
switch (*buffer)// uprava escape sekvenci pro JSON/HTML
|
||||||
|
{
|
||||||
|
case '"':
|
||||||
|
res.concat(F("\\\""));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '\\':
|
||||||
|
res.concat(F("\\\\"));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '/':
|
||||||
|
res.concat(F("\\/"));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '<':
|
||||||
|
res.concat(F("<"));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '>':
|
||||||
|
res.concat(F(">"));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
res.concat(*buffer);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
++buffer;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
void trace_dumpJSON(String &str)
|
void trace_dumpJSON(String &str)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -124,7 +133,7 @@ void trace_dumpJSON(String &str)
|
|||||||
str.concat(F(",\"s\":"));
|
str.concat(F(",\"s\":"));
|
||||||
str.concat(line._severity);
|
str.concat(line._severity);
|
||||||
str.concat(F(",\"d\":\""));
|
str.concat(F(",\"d\":\""));
|
||||||
str.concat(line._text);
|
str.concat(_getText(line._text));
|
||||||
str.concat(F("\"}"));
|
str.concat(F("\"}"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user