diff --git a/cores/portduino/PortduinoPrint.cpp b/cores/portduino/PortduinoPrint.cpp index b6de06a..1f74388 100644 --- a/cores/portduino/PortduinoPrint.cpp +++ b/cores/portduino/PortduinoPrint.cpp @@ -10,8 +10,10 @@ size_t Print::printf(const char *format, ...) { // Linux that is fine, TBD on MyNewt va_list args; va_start(args, format); - size_t n = vsnprintf(buf, sizeof(buf), format, args); - write(buf); + int n = vsnprintf(buf, sizeof(buf), format, args); va_end(args); - return n; -} \ No newline at end of file + if (n <= 0) return 0; + // vsnprintf returns the would-be length; clamp to what actually fit. + size_t len = (n < (int)sizeof(buf)) ? (size_t)n : sizeof(buf) - 1; + return write((const uint8_t *)buf, len); +}