File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 ()
You can’t perform that action at this time.
0 commit comments