From a4c901e7267b6a2c197bf388c87ad799cb6a1079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Grome=C5=A1?= Date: Fri, 13 Jul 2018 15:35:10 +0200 Subject: [PATCH] RF69 - Fixed incorrect null termination --- src/modules/RF69.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/modules/RF69.cpp b/src/modules/RF69.cpp index 93ce307e..753129fe 100644 --- a/src/modules/RF69.cpp +++ b/src/modules/RF69.cpp @@ -145,19 +145,8 @@ uint8_t RF69::receive(uint8_t* data, size_t len) { size_t length = _mod->SPIreadRegister(RF69_REG_FIFO); // read packet data - if(len == 0) { - // argument len equal to zero indicates String call, which means dynamically allocated data array - // dispose of the original and create a new one - delete[] data; - data = new uint8_t[length]; - } _mod->SPIreadRegisterBurst(RF69_REG_FIFO, length, data); - // add terminating null - if(len == 0) { - data[length] = 0; - } - // clear interrupt flags clearIRQFlags(); @@ -166,11 +155,12 @@ uint8_t RF69::receive(uint8_t* data, size_t len) { uint8_t RF69::receive(String& str, size_t len) { // create temporary array to store received data - char* data = new char[len]; + char* data = new char[0]; uint8_t state = RF69::receive((uint8_t*)data, len); // if packet was received successfully, copy data into String if(state == ERR_NONE) { + data[strlen(data) - 1] = 0; str = String(data); }