Fix rule expressions using mems corrupts character pool

Fix rule expressions using mems corrupts character pool (#9301)
This commit is contained in:
Theo Arends 2020-10-26 16:42:44 +01:00
parent b6e6e76e95
commit e030b9fece
3 changed files with 10 additions and 1 deletions

View File

@ -7,8 +7,12 @@ All notable changes to this project will be documented in this file.
### Added
- TLS in binary tasmota-zbbridge (#9620)
### Changed
- PlatformIO library structure redesigned for compilation speed by Jason2866
### Fixed
- Rule Break not working as expected when ONCE is enabled (#9245)
- Rule expressions using mems corrupts character pool (#9301)
## [9.0.0.2] - 20201025
### Added

View File

@ -97,6 +97,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
- Rotary driver adjusted accordingly if Mi Desk Lamp module is selected (#9399)
- Tasmota Arduino Core v2.7.4.5 allowing webpassword over 47 characters (#9687)
- Webserver code optimizations (#9580, #9590)
- PlatformIO library structure redesigned for compilation speed by Jason2866
### Fixed
- Ledlink blink when no network connected regression from v8.3.1.4 (#9292)
@ -113,6 +114,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
- Zigbee battery percentage (#9607)
- HassAnyKey anomaly (#9601)
- Rule Break not working as expected when ONCE is enabled (#9245)
- Rule expressions using mems corrupts character pool (#9301)
### Removed
- Support for direct upgrade from Tasmota versions before v7.0

View File

@ -2176,7 +2176,10 @@ void CmndMemory(void)
if (XdrvMailbox.data_len > 0) {
#ifdef USE_EXPRESSION
if (XdrvMailbox.data[0] == '=') { // Spaces already been skipped in data
dtostrfd(evaluateExpression(XdrvMailbox.data + 1, XdrvMailbox.data_len - 1), Settings.flag2.calc_resolution, SettingsText(SET_MEM1 + XdrvMailbox.index -1));
char rules_mem[FLOATSZ];
dtostrfd(evaluateExpression(XdrvMailbox.data + 1, XdrvMailbox.data_len - 1), Settings.flag2.calc_resolution, rules_mem);
SettingsUpdateText(SET_MEM1 + XdrvMailbox.index -1, rules_mem);
} else {
SettingsUpdateText(SET_MEM1 + XdrvMailbox.index -1, ('"' == XdrvMailbox.data[0]) ? "" : XdrvMailbox.data);
}