diff --git a/src/DidacticNet.cpp b/src/DidacticNet.cpp index 52e0fc9c7ad91567b1023ebc64ac2962766bf75d..4aeaf5ef598d3846271a44b431bf9efccee4fe33 100644 --- a/src/DidacticNet.cpp +++ b/src/DidacticNet.cpp @@ -130,9 +130,7 @@ bool DidacticPSNet::recieveData() static int msgCounter = 0; static int topicCounter = 0; static int payloadCounter = 0; - // if(msgCounter == NULL){ msgCounter = 0; } - // if(topicCounter == NULL){ topicCounter = 0; } - // if(dataCounter == NULL){ dataCounter = 0; } + while (checkData()) { char localBuffer = _port->read(); @@ -159,8 +157,16 @@ bool DidacticPSNet::recieveData() } else if (_readBufferMessage[0] == MSG_PRELIMITER && localBuffer != MSG_DELIMITER) { - msgCounter++; - _readBufferMessage[msgCounter] = localBuffer; + if (msgCounter > LEN_OVERHEAD + MAX_LEN_TOPICS + MAX_LEN_PAYLOAD) + { + msgCounter == 0; + _readBufferMessage[0] = '\0'; + } + else + { + msgCounter++; + _readBufferMessage[msgCounter] = localBuffer; + } } } return false;