Browse Source

fix crash when no active tasks

David Rose 17 years ago
parent
commit
eccea893f3
1 changed files with 12 additions and 10 deletions
  1. 12 10
      panda/src/event/asyncTaskChain.cxx

+ 12 - 10
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,