-
Notifications
You must be signed in to change notification settings - Fork 111
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix for infinate loop in getNextEvent
getNextEvent could get stuck in an infinate loop if searching for a type that is not in the list. This can happen when there is only enteries ofa single type, eg disabled and you search for active, as the LCD module does causing a watchdog timeout. Fixes #414
- Loading branch information
1 parent
39dddf8
commit 169c789
Showing
2 changed files
with
25 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,6 +16,8 @@ | |
|
||
uint32_t Scheduler::Event::_next_id = 1; | ||
|
||
Scheduler::EventInstance nullEventInstance; | ||
|
||
const char * days_of_the_week_strings[] = { | ||
"sunday", | ||
"monday", | ||
|
@@ -422,14 +424,23 @@ Scheduler::EventInstance &Scheduler::getCurrentEvent() | |
|
||
Scheduler::EventInstance &Scheduler::getNextEvent(EvseState type) | ||
{ | ||
DBUGVAR(type); | ||
EventInstance *event = &_activeEvent; // Assume active event is correct | ||
if(event->isValid()) | ||
{ | ||
event = &event->getNext(); | ||
if(EvseState::None != type) | ||
{ | ||
while(event->getState() != type) { | ||
EventInstance *startEvent = event; | ||
|
||
while(event->getState() != type) | ||
{ | ||
event = &event->getNext(); | ||
DBUGVAR((uint32_t)event, HEX); | ||
DBUGVAR((uint32_t)startEvent, HEX); | ||
if(startEvent == event) { | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
KipK
Collaborator
|
||
return nullEventInstance; | ||
} | ||
} | ||
} | ||
} | ||
|
@jeremypoulter , can this block here be the culprit of this issue ? KipK/openevse-gui-v2#31 (comment)