diff --git a/README.md b/README.md index 4b1798be3d4484cf7024f8741231271e21cfbd0b..4ebb2e743d23d2a362ad75b298afdf85e4a1a3af 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ the messages according to OpenDLV Standard Message Set into session 111 in Google Protobuf format, simply start it as follows: ``` -docker run --init --rm --net=host chalmersrevere/opendlv-device-gps-nmea-multi:v0.0.11 --nmea_ip=10.42.42.23 --nmea_port=9999 --cid=111 --verbose +docker run --init --rm --net=host chalmersrevere/opendlv-device-gps-nmea-multi:v0.0.12 --nmea_ip=10.42.42.23 --nmea_port=9999 --cid=111 --verbose ``` ## Build from sources on the example of Ubuntu 16.04 LTS diff --git a/src/nmea-decoder.cpp b/src/nmea-decoder.cpp index 4b5afb3146c10934a5815a047a9e875682491538..43fb352c9a012e16ba99b14f6bfd93604d77fe2a 100644 --- a/src/nmea-decoder.cpp +++ b/src/nmea-decoder.cpp @@ -52,7 +52,7 @@ void NMEADecoder::decode(const std::string &data, std::chrono::system_clock::tim // Consume data from m_buffer. size_t consumed = parseBuffer(m_buffer, m_size, std::move(tp)); // Discard processed entries. - for (size_t i{0}; i < (m_size - consumed); i++) { + for (size_t i{0}; (0 < consumed) && (i < (m_size - consumed)); i++) { m_buffer[i] = m_buffer[i + consumed]; } m_size -= consumed; @@ -81,7 +81,7 @@ size_t NMEADecoder::parseBuffer(const uint8_t *buffer, const size_t size, std::c while (true) { // Sanity check whether we consumed all data. if ((offset + NMEADecoderConstants::HEADER_SIZE) > size) { - return size; + return offset; } if ( ('G' == buffer[offset + 3]) &&