Skip to content

Commit 1f55e18

Browse files
committed
Schedule task leak fixed
1 parent 44a1edb commit 1f55e18

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

utils/RCBot2_meta/bot_schedule.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,10 @@ class CBotSchedule
127127
virtual void init () {
128128
} // nothing, used by sub classes
129129

130-
virtual ~CBotSchedule() = default; //TODO: experimental [APG]RoboCop[CL]
130+
virtual ~CBotSchedule()
131+
{
132+
freeMemory(); // own our tasks: deleting a schedule frees its tasks (RAII)
133+
}
131134

132135
void addTask( CBotTask *pTask );
133136

@@ -222,6 +225,7 @@ class CBotSchedules
222225
{
223226
for (std::deque<CBotSchedule*>::iterator it = m_Schedules.begin(); it != m_Schedules.end(); ) {
224227
if ((*it)->isID(iSchedule)) {
228+
delete *it; // ~CBotSchedule frees its tasks
225229
m_Schedules.erase(it);
226230
return;
227231
}
@@ -246,10 +250,7 @@ class CBotSchedules
246250
CBotSchedule *pSched = m_Schedules.front();
247251
m_Schedules.pop_front();
248252

249-
// TODO: eradicate freeMemory from the codebase
250-
pSched->freeMemory();
251-
252-
delete pSched;
253+
delete pSched; // ~CBotSchedule frees its tasks
253254
}
254255

255256
void freeMemory ()

0 commit comments

Comments
 (0)