From 3992712ad624a79ff569abba940a68f568140d80 Mon Sep 17 00:00:00 2001 From: Shuanglei Tao Date: Fri, 10 Jan 2025 15:24:56 +0800 Subject: [PATCH] Fix Print::printf implementation --- cores/nRF5/Print.cpp | 18 ++++++++++++------ cores/nRF5/Print.h | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/cores/nRF5/Print.cpp b/cores/nRF5/Print.cpp index 2cce751..e3df795 100644 --- a/cores/nRF5/Print.cpp +++ b/cores/nRF5/Print.cpp @@ -187,13 +187,19 @@ size_t Print::println(const Printable& x) return n; } -int Print::printf(const char* format, ...) +size_t Print::printf(const char * format, ...) { - va_list va; - va_start(va, format); - int ret = vprintf(format, va); - va_end(va); - return ret; + char buf[256]; + int len; + + va_list ap; + va_start(ap, format); + + len = vsnprintf(buf, 256, format, ap); + this->write(buf, len); + + va_end(ap); + return len; } // Private Methods ///////////////////////////////////////////////////////////// diff --git a/cores/nRF5/Print.h b/cores/nRF5/Print.h index 8b37c9f..15d23d2 100644 --- a/cores/nRF5/Print.h +++ b/cores/nRF5/Print.h @@ -83,7 +83,7 @@ class Print size_t println(double, int = 2); size_t println(const Printable&); size_t println(void); - int printf(const char* format, ...) __attribute__ ((format (printf, 2, 3))); + size_t printf(const char* format, ...) __attribute__ ((format (printf, 2, 3))); virtual void flush() { /* Empty implementation for backward compatibility */ }