Correct strlen to strlen_P when accessing PROGMEM in ModuleVariable.h #14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi! I was unable to compile any of the examples for an ESP8266 board (a Wemos D1 Mini, to be specific) - a memory fault appeared to be causing an infinite reset when attempting to set the contract (which I found odd since it's the same board depicted in the images accompanying the https://github.com/fredilarsen/ModuleInterface/tree/master/examples/WebPage )
After some digging through the code, I believe I have found the problem:
In ModuleVariable.cpp, variable type names are stored in a PROGMEM char array:
However, the length of this array is accessed using strlen() in the get_type() function:
This appears to compile and run ok under AVR architecture (even though it shouldn't), but causes a memory fault on ESP8266 boards. The attached PR fixes this issue by using the strlen_P() function intead.