diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-08-31 18:42:43 +0200 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-08-31 18:42:43 +0200 |
commit | b81277a1ef92a26b0bc56c2469dc7933c6c9cd1d (patch) | |
tree | 75952370a40d523e1c9ce1d56ab2c3b0d437854b /src/drivers | |
parent | 159ba7f3bcc22148c5c8eceac0e950ae53729111 (diff) | |
parent | 7a253d50f8da7a6f8176f784c196b85bcae3c8f1 (diff) | |
download | px4-firmware-b81277a1ef92a26b0bc56c2469dc7933c6c9cd1d.tar.gz px4-firmware-b81277a1ef92a26b0bc56c2469dc7933c6c9cd1d.tar.bz2 px4-firmware-b81277a1ef92a26b0bc56c2469dc7933c6c9cd1d.zip |
Merge branch 'sf0x_paranoid' of github.com:PX4/Firmware into swissfang
Diffstat (limited to 'src/drivers')
-rw-r--r-- | src/drivers/sf0x/sf0x.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/drivers/sf0x/sf0x.cpp b/src/drivers/sf0x/sf0x.cpp index 80ecab2ee..d7780e9e8 100644 --- a/src/drivers/sf0x/sf0x.cpp +++ b/src/drivers/sf0x/sf0x.cpp @@ -593,13 +593,19 @@ SF0X::collect() /* wipe out partially read content from last cycle(s), check for dot */ for (unsigned i = 0; i < (lend - 2); i++) { if (_linebuf[i] == '\n') { + /* allocate temporary buffer */ char buf[sizeof(_linebuf)]; + /* copy remainder of buffer (2nd measurement) to temporary buffer */ memcpy(buf, &_linebuf[i+1], (lend + 1) - (i + 1)); + /* copy temporary buffer to beginning of line buffer, + * effectively overwriting a previous temporary + * measurement + */ memcpy(_linebuf, buf, (lend + 1) - (i + 1)); } /* we need a digit before the dot and a dot for a valid number */ - if (i > 0 && _linebuf[i] == '.') { + if (i > 0 && ((_linebuf[i - 1] >= '0') && (_linebuf[i - 1] <= '9')) && (_linebuf[i] == '.')) { valid = true; } } |