TimerMgr: Add back max_timer_expires=0 special case

Commit 58fae22708 removed the max_expire==0
handling from DoAdvance() due to not being obvious what use it is. Jan
later reported that it broke the `redef max_timer_expires=0` (#2514).

This commit adds back the special case re-introducing the `max_timer_expires=0` ,
trying to make it fairly explicit that it exists.

This is an adaption of #2516 not adding a new option and trying a bit
to avoid global variable accesses down in DoAdvance(), though that
just moved to InitPostScript().

Fixes #2514.
This commit is contained in:
Arne Welzel 2022-11-24 11:29:04 +01:00
parent 8cdc3e4374
commit 2becb1337f
3 changed files with 11 additions and 4 deletions

View file

@ -84,7 +84,8 @@ public:
void Add(Timer* timer);
/**
* Advance the clock to time t, expiring at most max_expire timers.
* Advance the clock to time t, dispatching at most max_expire expired
* timers, or all expired timers if dispatch_all_expired is set.
*
* @param t the new time.
* @param max_expire the maximum number of timers to expire.
@ -152,6 +153,9 @@ private:
double last_advance;
int num_expired;
// Flag to indicate if Advance() should dispatch all expired timers
// for the max_timer_expires=0 case.
bool dispatch_all_expired = false;
size_t peak_size = 0;
size_t cumulative_num = 0;