diff --git a/source/driver-models/Timer.cpp b/source/driver-models/Timer.cpp index 3429b24c..d62f1ca5 100644 --- a/source/driver-models/Timer.cpp +++ b/source/driver-models/Timer.cpp @@ -78,8 +78,16 @@ TimerEvent *Timer::getTimerEvent() return &timerEventList[i]; } - // TODO: should try to realloc the list here. - return NULL; + // Try to realloc the list. + int extra = CODAL_TIMER_DEFAULT_EVENT_LIST_SIZE; + int newSize = eventListSize + extra; + TimerEvent *newList = (TimerEvent *) realloc( timerEventList, sizeof(TimerEvent) * newSize); + if ( newList == NULL) + return NULL; + timerEventList = newList; + memclr(timerEventList + eventListSize, sizeof(TimerEvent) * extra); + eventListSize = newSize; + return &timerEventList[ eventListSize - extra]; } void Timer::releaseTimerEvent(TimerEvent *event)