Fixes timers cleaning up oddly in certain edge cases.

This commit is contained in:
MrStonedOne
2017-01-17 00:12:29 -08:00
parent c8d4ed5cfd
commit 01e8fc6fbc
2 changed files with 10 additions and 10 deletions
+6 -9
View File
@@ -88,10 +88,9 @@ var/datum/subsystem/timer/SStimer
break
if (head.prev)
head.prev.next = timer
if (timer)
if (timer.prev)
timer.prev.next = head
timer.prev = head.prev
if (timer.prev)
timer.prev.next = head
timer.prev = head.prev
bucket_list[practical_offset] = timer
break LOOP_OUTER
while (timer && timer != head)
@@ -244,7 +243,7 @@ var/datum/subsystem/timer/SStimer
SStimer.hashes -= hash
if (callBack && callBack.object != GLOBAL_PROC && callBack.object.active_timers)
if (callBack && callBack.object && callBack.object != GLOBAL_PROC && callBack.object.active_timers)
callBack.object.active_timers -= src
UNSETEMPTY(callBack.object.active_timers)
@@ -272,9 +271,10 @@ var/datum/subsystem/timer/SStimer
if (bucketpos > 0 && bucketpos <= length(bucket_list))
buckethead = bucket_list[bucketpos]
SStimer.bucket_count--
else
SStimer.processing -= src
SStimer.bucket_count--
if (buckethead == src)
bucket_list[bucketpos] = next
else
@@ -283,9 +283,6 @@ var/datum/subsystem/timer/SStimer
if (next && next.prev == src)
next.prev = null
prev = null
next = null
return QDEL_HINT_IWILLGC