From eccea893f3a98412a75fd93993fbc7c855f5881b Mon Sep 17 00:00:00 2001 From: David Rose Date: Wed, 24 Dec 2008 00:44:55 +0000 Subject: [PATCH] fix crash when no active tasks --- panda/src/event/asyncTaskChain.cxx | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/panda/src/event/asyncTaskChain.cxx b/panda/src/event/asyncTaskChain.cxx index 7be77ecd88..eec75da9c0 100644 --- a/panda/src/event/asyncTaskChain.cxx +++ b/panda/src/event/asyncTaskChain.cxx @@ -1357,18 +1357,20 @@ do_write(ostream &out, int indent_level) const { } } - sort(tasks.begin(), tasks.end(), AsyncTaskSortPriority()); - double now = _manager->_clock->get_frame_time(); - // Since AsyncTaskSortPriority() sorts backwards (because of STL's - // push_heap semantics), we go through the task list in reverse - // order to print them forwards. - TaskHeap::reverse_iterator ti; - int current_sort = tasks.back()->get_sort() - 1; - for (ti = tasks.rbegin(); ti != tasks.rend(); ++ti) { - AsyncTask *task = (*ti); - write_task_line(out, indent_level, task, now); + if (!tasks.empty()) { + sort(tasks.begin(), tasks.end(), AsyncTaskSortPriority()); + TaskHeap::reverse_iterator ti; + int current_sort = tasks.back()->get_sort() - 1; + + // Since AsyncTaskSortPriority() sorts backwards (because of STL's + // push_heap semantics), we go through the task list in reverse + // order to print them forwards. + for (ti = tasks.rbegin(); ti != tasks.rend(); ++ti) { + AsyncTask *task = (*ti); + write_task_line(out, indent_level, task, now); + } } // Instead of iterating through the _sleeping list in heap order,