From fede190fbc22a7c9b95d844d83cc4053f18a73da Mon Sep 17 00:00:00 2001 From: kswang Date: Sat, 8 May 2021 14:31:05 +0800 Subject: [PATCH] avoid call event method when event be set to nullptr --- mindspore/core/ir/tensor.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/mindspore/core/ir/tensor.h b/mindspore/core/ir/tensor.h index 713cfed024..f7ed96fcba 100644 --- a/mindspore/core/ir/tensor.h +++ b/mindspore/core/ir/tensor.h @@ -307,17 +307,20 @@ class Tensor : public MetaTensor { } void SetNeedWait(bool need_wait) { - if (event_ != nullptr) { - event_->set_need_wait(need_wait); + auto event = event_; + if (event != nullptr) { + event->set_need_wait(need_wait); } else if (need_wait) { - event_ = std::make_shared(); - event_->set_need_wait(need_wait); + event = std::make_shared(); + event->set_need_wait(need_wait); + event_ = event; } } bool NeedWait() const { - if (event_ != nullptr) { - return event_->need_wait(); + auto event = event_; + if (event != nullptr) { + return event->need_wait(); } return false; } @@ -325,8 +328,8 @@ class Tensor : public MetaTensor { void Wait() const { if (event_ != nullptr) { event_->Wait(); + event_ = nullptr; } - event_ = nullptr; } void SetDeviceEvent(const std::shared_ptr &device_event) { device_event_ = device_event; }