diff options
author | Matthijs Kooijman <matthijs@stdin.nl> | 2014-02-18 20:56:31 +0100 |
---|---|---|
committer | Matthijs Kooijman <matthijs@stdin.nl> | 2014-02-19 16:09:30 +0100 |
commit | 53c0f1412d9a53ddc7bdeb1743d9054f552b1dab (patch) | |
tree | 304ab4c4a84e847f0e115fc4ed0ec02bb58e0115 | |
parent | a2408d154eb9fa3fa9b07cc5a04e9b3744a9f81a (diff) |
Don't store peeked characters in a char variable
peekNextDigit() returns an int, so it can return -1 in addition to all
256 possible bytes. By putting the result in a signe char, all bytes
over 128 will be interpreted as "no bytes available". Furthermore, it
seems that on SAM "char" is unsigned by default, causing the
"if (c < 0)" line a bit further down to always be false.
Using an int is more appropriate.
A different fix for this issue was suggested in #1399. This fix helps
towards #1728.
-rw-r--r-- | cores/arduino/Stream.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/cores/arduino/Stream.cpp b/cores/arduino/Stream.cpp index aafb7fc..a12a72e 100644 --- a/cores/arduino/Stream.cpp +++ b/cores/arduino/Stream.cpp @@ -176,7 +176,7 @@ float Stream::parseFloat(char skipChar){ boolean isNegative = false; boolean isFraction = false; long value = 0; - char c; + int c; float fraction = 1.0; c = peekNextDigit(); |