Modules: Fix an integer sign bug in moduleTimerHandler (#8131)
bug was introduced in 1a91a2700b
This commit is contained in:
parent
441c490024
commit
2f41a38568
10
src/module.c
10
src/module.c
@ -5469,8 +5469,11 @@ int moduleTimerHandler(struct aeEventLoop *eventLoop, long long id, void *client
|
|||||||
} else {
|
} else {
|
||||||
/* We call ustime() again instead of using the cached 'now' so that
|
/* We call ustime() again instead of using the cached 'now' so that
|
||||||
* 'next_period' isn't affected by the time it took to execute
|
* 'next_period' isn't affected by the time it took to execute
|
||||||
* previous calls to 'callback. */
|
* previous calls to 'callback.
|
||||||
next_period = (expiretime-ustime())/1000; /* Scale to milliseconds. */
|
* We need to cast 'expiretime' so that the compiler will not treat
|
||||||
|
* the difference as unsigned (Causing next_period to be huge) in
|
||||||
|
* case expiretime < ustime() */
|
||||||
|
next_period = ((long long)expiretime-ustime())/1000; /* Scale to milliseconds. */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5519,7 +5522,8 @@ RedisModuleTimerID RM_CreateTimer(RedisModuleCtx *ctx, mstime_t period, RedisMod
|
|||||||
|
|
||||||
/* We need to install the main event loop timer if it's not already
|
/* We need to install the main event loop timer if it's not already
|
||||||
* installed, or we may need to refresh its period if we just installed
|
* installed, or we may need to refresh its period if we just installed
|
||||||
* a timer that will expire sooner than any other else. */
|
* a timer that will expire sooner than any other else (i.e. the timer
|
||||||
|
* we just installed is the first timer in the Timers rax). */
|
||||||
if (aeTimer != -1) {
|
if (aeTimer != -1) {
|
||||||
raxIterator ri;
|
raxIterator ri;
|
||||||
raxStart(&ri,Timers);
|
raxStart(&ri,Timers);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user