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,