Skip to content

Commit b6ea660

Browse files
#SCHEDULEDISPATCHER - Fixing a memory leak. Thanks to @Shazzer1951
1 parent 5005203 commit b6ea660

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

Moose Development/Moose/Core/ScheduleDispatcher.lua

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,11 @@ function SCHEDULEDISPATCHER:AddSchedule( Scheduler, ScheduleFunction, ScheduleAr
246246
-- self:T3( { Repeat = CallID, CurrentTime, ScheduleTime, ScheduleArguments } )
247247
return ScheduleTime -- returns the next time the function needs to be called.
248248
else
249-
self:Stop( Scheduler, CallID )
249+
self:_Reclaim( Scheduler, CallID )
250250
end
251251

252252
else
253-
self:Stop( Scheduler, CallID )
253+
self:_Reclaim( Scheduler, CallID )
254254
end
255255
else
256256
self:I( "<<<>" .. Name .. ":" .. Line .. " (" .. Source .. ")" )
@@ -375,3 +375,13 @@ function SCHEDULEDISPATCHER:NoTrace( Scheduler )
375375
Scheduler.ShowTrace = false
376376
end
377377

378+
--- Helper for memory cleanup for self stopping schedulers
379+
-- @param #SCHEDULEDISPATCHER self
380+
-- @param Core.Scheduler#SCHEDULER Scheduler Scheduler object.
381+
-- @param #string CallID (Optional) Scheduler Call ID.
382+
function SCHEDULEDISPATCHER:_Reclaim( Scheduler, CallID )
383+
self:Stop( Scheduler, CallID ) -- remove DCS timer, nil ScheduleID
384+
if self.Schedule[Scheduler] then self.Schedule[Scheduler][CallID] = nil end
385+
self.ObjectSchedulers[CallID] = nil
386+
self.PersistentSchedulers[CallID] = nil
387+
end

0 commit comments

Comments
 (0)