From: Arnaud Giersch Date: Tue, 12 Feb 2019 15:29:00 +0000 (+0100) Subject: Fix bad cast spotted by UBSan. X-Git-Tag: v3_22~345 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/6d76121aad365cdeda0c0575afb192b642775197 Fix bad cast spotted by UBSan. --- diff --git a/src/plugins/vm/VirtualMachineImpl.cpp b/src/plugins/vm/VirtualMachineImpl.cpp index 6a371cb338..b662d97fd0 100644 --- a/src/plugins/vm/VirtualMachineImpl.cpp +++ b/src/plugins/vm/VirtualMachineImpl.cpp @@ -53,10 +53,15 @@ static void host_state_change(s4u::Host& host) } } -static void add_active_task(kernel::activity::ActivityImplPtr exec) +static s4u::VirtualMachine* get_vm_from_task(kernel::activity::ActivityImplPtr task) { - s4u::VirtualMachine* vm = - dynamic_cast(boost::static_pointer_cast(exec)->host_); + kernel::activity::ExecImpl* exec = dynamic_cast(task.get()); + return exec != nullptr ? dynamic_cast(exec->host_) : nullptr; +} + +static void add_active_task(kernel::activity::ActivityImplPtr task) +{ + s4u::VirtualMachine* vm = get_vm_from_task(task); if (vm != nullptr) { VirtualMachineImpl *vm_impl = vm->get_impl(); vm_impl->active_tasks_ = vm_impl->active_tasks_ + 1; @@ -64,10 +69,9 @@ static void add_active_task(kernel::activity::ActivityImplPtr exec) } } -static void remove_active_task(kernel::activity::ActivityImplPtr exec) +static void remove_active_task(kernel::activity::ActivityImplPtr task) { - s4u::VirtualMachine* vm = - dynamic_cast(boost::static_pointer_cast(exec)->host_); + s4u::VirtualMachine* vm = get_vm_from_task(task); if (vm != nullptr) { VirtualMachineImpl *vm_impl = vm->get_impl(); vm_impl->active_tasks_ = vm_impl->active_tasks_ - 1;