From 9cc809a9cae16fe280c3e64fc6d123da1201503e Mon Sep 17 00:00:00 2001 From: Chuck Todd Date: Mon, 3 Aug 2015 15:38:29 -0600 Subject: [PATCH 1/2] Print not Aborting on Write() failure Print::write(const uint8_t *buffer, size_t size) and Print::print(const __FlashStringHelper *ifsh) would continue calling write(char) after a failed write(char) this behavior would render returned count unuseable see arduino/Arduino issue #3614 --- hardware/arduino/avr/cores/arduino/Print.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hardware/arduino/avr/cores/arduino/Print.cpp b/hardware/arduino/avr/cores/arduino/Print.cpp index 782d50b4e06..8afee2716a6 100644 --- a/hardware/arduino/avr/cores/arduino/Print.cpp +++ b/hardware/arduino/avr/cores/arduino/Print.cpp @@ -17,6 +17,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Modified 23 November 2006 by David A. Mellis + Modified 03 August 2015 by Chuck Todd */ #include @@ -34,7 +35,8 @@ size_t Print::write(const uint8_t *buffer, size_t size) { size_t n = 0; while (size--) { - n += write(*buffer++); + if(write(*buffer++) n++; + else break; } return n; } @@ -46,7 +48,8 @@ size_t Print::print(const __FlashStringHelper *ifsh) while (1) { unsigned char c = pgm_read_byte(p++); if (c == 0) break; - n += write(c); + if(write(c)) n++; + else break; } return n; } From 6eba593e3b3ba2acc579c95df293342ffec8140d Mon Sep 17 00:00:00 2001 From: Chuck Todd Date: Tue, 11 Aug 2015 17:54:53 -0600 Subject: [PATCH 2/2] Fix missing ')' bad transcription --- hardware/arduino/avr/cores/arduino/Print.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/arduino/avr/cores/arduino/Print.cpp b/hardware/arduino/avr/cores/arduino/Print.cpp index 8afee2716a6..a9fa2f7bad3 100644 --- a/hardware/arduino/avr/cores/arduino/Print.cpp +++ b/hardware/arduino/avr/cores/arduino/Print.cpp @@ -35,7 +35,7 @@ size_t Print::write(const uint8_t *buffer, size_t size) { size_t n = 0; while (size--) { - if(write(*buffer++) n++; + if(write(*buffer++)) n++; else break; } return n;