mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-13 00:22:10 +00:00
use fixed-size buffer in RedirectablePrint::vprintf() (#1622)
Co-authored-by: Peter Lawrence <12226419+majbthrd@users.noreply.github.com> Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com> Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
parent
64f852e3f7
commit
f66c8572b4
@ -38,20 +38,13 @@ size_t RedirectablePrint::write(uint8_t c)
|
|||||||
size_t RedirectablePrint::vprintf(const char *format, va_list arg)
|
size_t RedirectablePrint::vprintf(const char *format, va_list arg)
|
||||||
{
|
{
|
||||||
va_list copy;
|
va_list copy;
|
||||||
|
static char printBuf[160];
|
||||||
|
|
||||||
va_copy(copy, arg);
|
va_copy(copy, arg);
|
||||||
int len = vsnprintf(printBuf, printBufLen, format, copy);
|
int len = vsnprintf(printBuf, sizeof(printBuf), format, copy);
|
||||||
va_end(copy);
|
va_end(copy);
|
||||||
if (len < 0) {
|
|
||||||
va_end(arg);
|
if (len < 0) return 0;
|
||||||
return 0;
|
|
||||||
};
|
|
||||||
if (len >= (int)printBufLen) {
|
|
||||||
delete[] printBuf;
|
|
||||||
printBufLen *= 2;
|
|
||||||
printBuf = new char[printBufLen];
|
|
||||||
len = vsnprintf(printBuf, printBufLen, format, arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
len = Print::write(printBuf, len);
|
len = Print::write(printBuf, len);
|
||||||
return len;
|
return len;
|
||||||
|
@ -12,10 +12,6 @@ class RedirectablePrint : public Print
|
|||||||
{
|
{
|
||||||
Print *dest;
|
Print *dest;
|
||||||
|
|
||||||
/// We dynamically grow this scratch buffer if necessary
|
|
||||||
char *printBuf = new char[64];
|
|
||||||
size_t printBufLen = 64;
|
|
||||||
|
|
||||||
/// Used to allow multiple logDebug messages to appear on a single log line
|
/// Used to allow multiple logDebug messages to appear on a single log line
|
||||||
bool isContinuationMessage = false;
|
bool isContinuationMessage = false;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user