From 7df684853c33628972030ad34f1758a6c1b314b0 Mon Sep 17 00:00:00 2001 From: chehang Date: Fri, 25 Aug 2023 21:24:06 +0800 Subject: [PATCH] fixed 41a091c from https://gitee.com/dong-qingran/notification_eventhandler/pulls/137 fix: new without std::nothrow error Signed-off-by: chehang Change-Id: Id903154034ff27ce49d3b131f8b25556bce46a28 --- frameworks/eventhandler/src/event_runner.cpp | 6 +++++- frameworks/eventhandler/src/inner_event.cpp | 2 +- .../eventhandler/src/native_implement_eventhandler.cpp | 4 ++-- interfaces/inner_api/inner_event.h | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/frameworks/eventhandler/src/event_runner.cpp b/frameworks/eventhandler/src/event_runner.cpp index a503e74..2755848 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 654b44e..4216863 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 6549155..9fa0c98 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 b8fb32c..e7152ac 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); } -- Gitee