summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Ye <lzye@google.com>2022-10-12 22:42:51 -0700
committerChris Ye <lzye@google.com>2022-10-31 20:36:57 +0000
commita9de1657e9915a2d47fb87a3f55ac97157ad53b6 (patch)
tree9fdb7db27f3feb732465805bea2ef4beb0469198
parent066827248556486d7ec53a610825af91213c74d0 (diff)
downloadwificond-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.cpp9
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(