From f66c8572b436d118914e47bd066838a4ba8bbe7b Mon Sep 17 00:00:00 2001 From: majbthrd Date: Fri, 12 Aug 2022 13:41:16 -0500 Subject: [PATCH] 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 Co-authored-by: Ben Meadors --- src/RedirectablePrint.cpp | 15 ++++----------- src/RedirectablePrint.h | 4 ---- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/RedirectablePrint.cpp b/src/RedirectablePrint.cpp index a2f048f8e..b558be85b 100644 --- a/src/RedirectablePrint.cpp +++ b/src/RedirectablePrint.cpp @@ -38,20 +38,13 @@ size_t RedirectablePrint::write(uint8_t c) size_t RedirectablePrint::vprintf(const char *format, va_list arg) { va_list copy; + static char printBuf[160]; va_copy(copy, arg); - int len = vsnprintf(printBuf, printBufLen, format, copy); + int len = vsnprintf(printBuf, sizeof(printBuf), format, copy); va_end(copy); - if (len < 0) { - va_end(arg); - return 0; - }; - if (len >= (int)printBufLen) { - delete[] printBuf; - printBufLen *= 2; - printBuf = new char[printBufLen]; - len = vsnprintf(printBuf, printBufLen, format, arg); - } + + if (len < 0) return 0; len = Print::write(printBuf, len); return len; diff --git a/src/RedirectablePrint.h b/src/RedirectablePrint.h index bf797b41f..b2081d046 100644 --- a/src/RedirectablePrint.h +++ b/src/RedirectablePrint.h @@ -12,10 +12,6 @@ class RedirectablePrint : public Print { 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 bool isContinuationMessage = false;