diff options
author | Chris Ye <lzye@google.com> | 2022-10-12 22:42:51 -0700 |
---|---|---|
committer | Chris Ye <lzye@google.com> | 2022-10-31 20:36:57 +0000 |
commit | a9de1657e9915a2d47fb87a3f55ac97157ad53b6 (patch) | |
tree | 9fdb7db27f3feb732465805bea2ef4beb0469198 | |
parent | 066827248556486d7ec53a610825af91213c74d0 (diff) | |
download | wificond-a9de1657e9915a2d47fb87a3f55ac97157ad53b6.tar.gz |
Use sp<T>::make to create the sp pointer for EventLoopCallback
In wificond, EventLoopCallback is derrived from MessageHandler,
which is derrived from RefBase, so we should be using sp<T>::make to
create the smart pointer so the incStrong will occur on the Refbase
object.
Bug: 243362981
Test: Flash hwasan build and do wificond scan, do not observe crash.
Merged-In: Ia9505a2247bd129665ed3b1ca87f701f7e4c48f6
Change-Id: Ia9505a2247bd129665ed3b1ca87f701f7e4c48f6
-rw-r--r-- | looper_backed_event_loop.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/looper_backed_event_loop.cpp b/looper_backed_event_loop.cpp index b4f5c44..e97d1d9 100644 --- a/looper_backed_event_loop.cpp +++ b/looper_backed_event_loop.cpp @@ -30,7 +30,7 @@ class EventLoopCallback : public android::MessageHandler { ~EventLoopCallback() override = default; - virtual void handleMessage(const android::Message& message) { + void handleMessage(const android::Message& message) override { callback_(); } @@ -77,16 +77,13 @@ LooperBackedEventLoop::~LooperBackedEventLoop() { } void LooperBackedEventLoop::PostTask(const std::function<void()>& callback) { - sp<android::MessageHandler> event_loop_callback = - new EventLoopCallback(callback); - looper_->sendMessage(event_loop_callback, NULL); + looper_->sendMessage(sp<EventLoopCallback>::make(callback), Message()); } void LooperBackedEventLoop::PostDelayedTask( const std::function<void()>& callback, int64_t delay_ms) { - sp<android::MessageHandler> looper_callback = new EventLoopCallback(callback); - looper_->sendMessageDelayed(ms2ns(delay_ms), looper_callback, NULL); + looper_->sendMessageDelayed(ms2ns(delay_ms), sp<EventLoopCallback>::make(callback), Message()); } bool LooperBackedEventLoop::WatchFileDescriptor( |