diff --git a/frameworks/eventhandler/src/event_runner.cpp b/frameworks/eventhandler/src/event_runner.cpp index a503e744e081c8d6d899d07dfbadf323f50fe008..2755848c041b06fa6b35b4d276503e48d34be8d9 100644 --- a/frameworks/eventhandler/src/event_runner.cpp +++ b/frameworks/eventhandler/src/event_runner.cpp @@ -402,7 +402,11 @@ std::shared_ptr EventRunner::Create(bool inNewThread) } // Constructor of 'EventRunner' is private, could not use 'std::make_shared' to construct it. - std::shared_ptr sp(new EventRunner(false)); + std::shared_ptr sp(new (std::nothrow) EventRunner(false)); + if (sp == nullptr) { + HILOGI("Failed to create EventRunner Instance"); + return nullptr; + } auto innerRunner = std::make_shared(sp); sp->innerRunner_ = innerRunner; sp->queue_ = innerRunner->GetEventQueue(); diff --git a/frameworks/eventhandler/src/inner_event.cpp b/frameworks/eventhandler/src/inner_event.cpp index 654b44e14ac9b205b6941c1cda090e1fb5733f97..421686321d50c64d47ce6976223462b0474dfc46 100644 --- a/frameworks/eventhandler/src/inner_event.cpp +++ b/frameworks/eventhandler/src/inner_event.cpp @@ -99,7 +99,7 @@ public: } // Allocate new memory, while pool is empty. - return InnerEvent::Pointer(new InnerEvent, Drop); + return InnerEvent::Pointer(new (std::nothrow) InnerEvent, Drop); } private: diff --git a/frameworks/eventhandler/src/native_implement_eventhandler.cpp b/frameworks/eventhandler/src/native_implement_eventhandler.cpp index 6549155dd60df90b7d326c94ffb0cbccc6eba443..9fa0c98f2069718308df4ab170c6166a1c8f4908 100644 --- a/frameworks/eventhandler/src/native_implement_eventhandler.cpp +++ b/frameworks/eventhandler/src/native_implement_eventhandler.cpp @@ -128,12 +128,12 @@ EventRunnerNativeImplement::~EventRunnerNativeImplement() const EventRunnerNativeImplement *EventRunnerNativeImplement::GetEventRunnerNativeObj() { - return new EventRunnerNativeImplement(true); + return new (std::nothrow) EventRunnerNativeImplement(true); } const EventRunnerNativeImplement *EventRunnerNativeImplement::CreateEventRunnerNativeObj() { - return new EventRunnerNativeImplement(false); + return new (std::nothrow) EventRunnerNativeImplement(false); } ErrCode EventRunnerNativeImplement::RunEventRunnerNativeObj() const diff --git a/interfaces/inner_api/inner_event.h b/interfaces/inner_api/inner_event.h index b8fb32cad9b287133bd333b4257e535dfd7914b2..e7152ac944cd9c0d44169328ac796e118e970c7a 100644 --- a/interfaces/inner_api/inner_event.h +++ b/interfaces/inner_api/inner_event.h @@ -418,7 +418,7 @@ private: template inline void SaveSharedPtr(const T &object) { - smartPtr_ = new T(object); + smartPtr_ = new (std::nothrow) T(object); smartPtrDtor_ = ReleaseSmartPtr; smartPtrTypeId_ = CalculateSmartPtrTypeId(object); } @@ -426,7 +426,7 @@ private: template inline void SaveUniquePtr(T &object) { - smartPtr_ = new T(std::move(object)); + smartPtr_ = new (std::nothrow) T(std::move(object)); smartPtrDtor_ = ReleaseSmartPtr; smartPtrTypeId_ = CalculateSmartPtrTypeId(object); }