From b593bc2c9205c54b55a6be583da6e90f515b2f05 Mon Sep 17 00:00:00 2001 From: Aziz Chynaliev Date: Fri, 17 Dec 2021 12:33:53 +0300 Subject: [PATCH] Fix: potential bucket corruption in timer reset_buckets (#17231) Co-authored-by: Simon Ogorodnik --- code/controllers/subsystem/timer.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index a5e179c6a82..ddab778dc54 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -265,6 +265,12 @@ SUBSYSTEM_DEF(timer) // Add all timed events from the secondary queue as well alltimers += second_queue + for (var/datum/timedevent/t in alltimers) + t.bucket_joined = FALSE + t.bucket_pos = -1 + t.prev = null + t.next = null + // If there are no timers being tracked by the subsystem, // there is no need to do any further rebuilding if (!length(alltimers)) @@ -308,6 +314,7 @@ SUBSYSTEM_DEF(timer) new_bucket_count++ var/bucket_pos = BUCKET_POS(timer) timer.bucket_pos = bucket_pos + timer.bucket_joined = TRUE var/datum/timedevent/bucket_head = bucket_list[bucket_pos] if (!bucket_head)