Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Don't use null objects v3.23.2
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Mon, 8 Jul 2019 16:08:15 +0000 (18:08 +0200)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Mon, 8 Jul 2019 16:11:07 +0000 (18:11 +0200)
Fixes https://github.com/simgrid/simgrid/issues/328

ChangeLog
src/plugins/host_load.cpp

index 4d32295..859a17c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,6 +16,7 @@ XBT:
 Bugs:
  - Really fix FG#26: Turning off a link should raise NetworkFailureException
  - FG#27: Wrong exception thrown to wait_any when link is turned off
+ - GH#328: Java: Canceling multiple tasks in a single vm/host
 
 ----------------------------------------------------------------------------
 
index 19c495f..45b89e7 100644 (file)
@@ -96,12 +96,13 @@ void HostLoad::update()
   while (iter != end(current_activities)) {
     auto& activity                         = iter->first;  // Just an alias
     auto& remaining_cost_after_last_update = iter->second; // Just an alias
+    auto& action                           = activity->surf_action_;
     auto current_iter                      = iter;
     ++iter;
 
-    if (activity->surf_action_->get_finish_time() != now && activity->state_ == e_smx_state_t::SIMIX_RUNNING) {
+    if (action != nullptr && action->get_finish_time() != now && activity->state_ == e_smx_state_t::SIMIX_RUNNING) {
       if (remaining_cost_after_last_update == activity_uninitialized_remaining_cost) {
-        remaining_cost_after_last_update = activity->surf_action_->get_cost();
+        remaining_cost_after_last_update = action->get_cost();
       }
       double computed_flops_since_last_update = remaining_cost_after_last_update - /*remaining now*/activity->get_remaining();
       computed_flops_                        += computed_flops_since_last_update;