diff --git a/Adafruit_MQTT.cpp b/Adafruit_MQTT.cpp index 87fea10..443fc69 100644 --- a/Adafruit_MQTT.cpp +++ b/Adafruit_MQTT.cpp @@ -234,6 +234,7 @@ Adafruit_MQTT_Subscribe *Adafruit_MQTT::readSubscription(int16_t timeout) { } // extract out just the data, into the subscription object itself memcpy(subscriptions[i]->lastread, buffer+4+topiclen, datalen); + subscriptions[i]->datalen = datalen; DEBUG_PRINT(F("Data len: ")); DEBUG_PRINTLN(datalen); DEBUG_PRINT(F("Data: ")); DEBUG_PRINTLN((char *)subscriptions[i]->lastread); diff --git a/Adafruit_MQTT.h b/Adafruit_MQTT.h index 82e5bc1..0fe5ed4 100644 --- a/Adafruit_MQTT.h +++ b/Adafruit_MQTT.h @@ -203,6 +203,9 @@ class Adafruit_MQTT_Subscribe { uint8_t qos; uint8_t lastread[SUBSCRIPTIONDATALEN]; + // Number valid bytes in lastread. Limited to SUBSCRIPTIONDATALEN-1 to + // ensure nul terminating lastread. + uint8_t datalen; private: Adafruit_MQTT *mqtt; };