From b74d6778d59d49793689dc6daca6da29597ebc25 Mon Sep 17 00:00:00 2001 From: xingyanan Date: Tue, 27 Sep 2022 06:51:46 +0000 Subject: [PATCH] fix uicontent use after release Signed-off-by: xingyanan --- wm/include/window_impl.h | 1 + wm/src/window_impl.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/wm/include/window_impl.h b/wm/include/window_impl.h index 591eeeba..38de93ad 100644 --- a/wm/include/window_impl.h +++ b/wm/include/window_impl.h @@ -294,6 +294,7 @@ private: } inline void NotifyBeforeDestroy(std::string windowName) { + std::lock_guard lock(mutex_); if (uiContent_ != nullptr) { auto uiContent = std::move(uiContent_); uiContent_ = nullptr; diff --git a/wm/src/window_impl.cpp b/wm/src/window_impl.cpp index ab44755f..b34ac143 100755 --- a/wm/src/window_impl.cpp +++ b/wm/src/window_impl.cpp @@ -1839,7 +1839,11 @@ void WindowImpl::UpdateRect(const struct Rect& rect, bool decoStatus, WindowSize WLOGFD("sizeChange callback size: %{public}lu", (unsigned long)windowChangeListeners_.size()); NotifySizeChange(rectToAce, reason); - if (uiContent_ != nullptr) { + { + std::lock_guard lock(mutex_); + if (uiContent_ == nullptr) { + return; + } Ace::ViewportConfig config; WLOGFI("UpdateViewportConfig Id:%{public}u, windowRect:[%{public}d, %{public}d, %{public}u, %{public}u]", property_->GetWindowId(), rectToAce.posX_, rectToAce.posY_, rectToAce.width_, rectToAce.height_);