From 9073d2a82cb90a9377a93f8ceb59dd39921c1760 Mon Sep 17 00:00:00 2001 From: Marcel Alburg Date: Tue, 16 Aug 2022 22:33:19 +0200 Subject: [PATCH] in a fixed size array with an unitialized union type a uint64_t value can have a default value --- tools/esp8266/hmInverter.h | 3 +++ tools/esp8266/hmSystem.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/esp8266/hmInverter.h b/tools/esp8266/hmInverter.h index ca1e1bb6..321dec50 100644 --- a/tools/esp8266/hmInverter.h +++ b/tools/esp8266/hmInverter.h @@ -80,6 +80,7 @@ class Inverter { RECORDTYPE *record; // pointer for values uint16_t chMaxPwr[4]; // maximum power of the modules (Wp) char chName[4][MAX_NAME_LENGTH]; // human readable name for channel + bool initialized; // needed to check if the inverter was correctly added (ESP32 specific - union types are never null) Inverter() { ts = 0; @@ -87,6 +88,7 @@ class Inverter { powerLimit[1] = 0x0000; // devControlRequest = false; devControlCmd = 0xff; + initialized = false; } ~Inverter() { @@ -101,6 +103,7 @@ class Inverter { memset(name, 0, MAX_NAME_LENGTH); memset(chName, 0, MAX_NAME_LENGTH * 4); memset(record, 0, sizeof(RECORDTYPE) * listLen); + initialized = true; } uint8_t getPosByChFld(uint8_t channel, uint8_t fieldId) { diff --git a/tools/esp8266/hmSystem.h b/tools/esp8266/hmSystem.h index c2a7e28a..1070445a 100644 --- a/tools/esp8266/hmSystem.h +++ b/tools/esp8266/hmSystem.h @@ -91,7 +91,7 @@ class HmSystem { INVERTERTYPE *getInverterByPos(uint8_t pos, bool check = true) { DPRINTLN(DBG_VERBOSE, F("hmSystem.h:getInverterByPos")); - if((mInverter[pos].serial.u64 != 0ULL) || false == check) + if((mInverter[pos].initialized && mInverter[pos].serial.u64 != 0ULL) || false == check) return &mInverter[pos]; else return NULL;