File r900343.diff of Package kdepim4

Subject: ktimetracker: fix crash when deleting the last task
From: wstephenson@suse.de
Bug: kde:173543
Patch-upstream: 900343
--- ktimetracker/taskview.cpp	(revision 900342)
+++ ktimetracker/taskview.cpp	(revision 900343)
@@ -930,6 +930,7 @@ void TaskView::deleteTaskBatch( Task* ta
     _idleTimeDetector->stopIdleDetection();
     emit timersInactive();
   }
+  task->delete_recursive();
   emit tasksChanged( d->mActiveTasks );
 }
 
@@ -968,7 +969,7 @@ void TaskView::deleteTask( Task* task )
     for (int n=delendum.size()-1; n>=0; --n) 
       deleteTaskBatch(itemAt(delendum[n]));
   }
-  d->mStorage->buildTaskView(this);
+  //d->mStorage->buildTaskView(this);
 }
 
 void TaskView::markTaskAsComplete()
--- ktimetracker/task.cpp	(revision 900342)
+++ ktimetracker/task.cpp	(revision 900343)
@@ -142,6 +142,16 @@ Task::~Task()
   delete mTimer;
 }
 
+void Task::delete_recursive()
+{
+  while ( this->child(0) )
+  {
+    Task* t=(Task*) this->child(0);
+    t->delete_recursive();
+  }
+  delete this;
+}
+
 void Task::setRunning( bool on, KarmStorage* storage, const QDateTime &when )
 // This is the back-end, the front-end is StartTimerFor()
 {
--- ktimetracker/task.h	(revision 900342)
+++ ktimetracker/task.h	(revision 900343)
@@ -86,6 +86,8 @@ class Task : public QObject, public QTre
     /** Return unique iCalendar Todo ID for this task. */
     QString uid() const;
 
+    void delete_recursive();
+
     int depth();
 
     /**
Index: ktimetracker/taskview.cpp
===================================================================
Index: ktimetracker/task.cpp
===================================================================
Index: ktimetracker/task.h
===================================================================
openSUSE Build Service is sponsored by