diff --git a/core/base/src/TTask.cxx b/core/base/src/TTask.cxx index a717fb2b9200e41c97859790bd805f8783791302..e85aeb83d3f0aced43f16a761cd2c35200dd7a7e 100644 --- a/core/base/src/TTask.cxx +++ b/core/base/src/TTask.cxx @@ -120,7 +120,12 @@ TTask& TTask::operator=(const TTask& tt) //assignment operator (PLEASE DO NOT USE THIS IS WRONG) if(this!=&tt) { TNamed::operator=(tt); - fTasks= 0; //<===tobe fixed + fTasks->Delete(); + TIter next(tt.fTasks); + TTask *task; + while ((task = (TTask*)next())) { + fTasks->Add(new TTask(*task)); + } fOption=tt.fOption; fBreakin=tt.fBreakin; fBreakout=tt.fBreakout; @@ -131,17 +136,26 @@ TTask& TTask::operator=(const TTask& tt) } //______________________________________________________________________________ //______________________________________________________________________________ -TTask::TTask(const TTask &task) : TNamed(task) +TTask::TTask(const TTask &other) : TNamed(other) { - // Copy constructors. (PLEASE DO NOT USE THIS IS WRONG) + // Copy constructor. fTasks = new TList(); + TIter next(other.fTasks); + TTask *task; + while ((task = (TTask*)next())) { + fTasks->Add(new TTask(*task)); + } + fOption = other.fOption; + fBreakin = other.fBreakin; + fBreakout = other.fBreakout; + fHasExecuted = kFALSE; + fActive = other.fActive; } //______________________________________________________________________________ TTask::~TTask() { // Delete a task and its subtasks. - if (!fTasks) return; fTasks->Delete(); delete fTasks;