[MIRROR] Fix client time timers duplicating if any client time timer caused a stack overflow. (#1703)

* Fix client time timers duplicating if any client time timer caused a stack overflow. (#54977)

* Fix client time timers duplicating if any client time timer caused a stack overflow.

* Fix client time timers duplicating if any client time timer caused a stack overflow.

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
This commit is contained in:
SkyratBot
2020-11-17 00:46:40 +01:00
committed by GitHub
co-authored by Kyle Spier-Swenson
parent 4aa0bd0bd0
commit 44567b22a3
+5 -2
View File
@@ -100,7 +100,10 @@ SUBSYSTEM_DEF(timer)
log_world(to_log.Join("\n"))
// Process client-time timers
var/next_clienttime_timer_index = 0
var/static/next_clienttime_timer_index = 0
if (next_clienttime_timer_index)
clienttime_timers.Cut(1, next_clienttime_timer_index+1)
next_clienttime_timer_index = 0
for (next_clienttime_timer_index in 1 to length(clienttime_timers))
if (MC_TICK_CHECK)
next_clienttime_timer_index--
@@ -112,7 +115,6 @@ SUBSYSTEM_DEF(timer)
var/datum/callback/callBack = ctime_timer.callBack
if (!callBack)
clienttime_timers.Cut(next_clienttime_timer_index,next_clienttime_timer_index + 1)
CRASH("Invalid timer: [get_timer_debug_string(ctime_timer)] world.time: [world.time], \
head_offset: [head_offset], practical_offset: [practical_offset], REALTIMEOFDAY: [REALTIMEOFDAY]")
@@ -129,6 +131,7 @@ SUBSYSTEM_DEF(timer)
// Remove invoked client-time timers
if (next_clienttime_timer_index)
clienttime_timers.Cut(1, next_clienttime_timer_index+1)
next_clienttime_timer_index = 0
if (MC_TICK_CHECK)
return