diff --git a/wmserver/src/window_controller.cpp b/wmserver/src/window_controller.cpp index fca0a811..e0c7ea8d 100644 --- a/wmserver/src/window_controller.cpp +++ b/wmserver/src/window_controller.cpp @@ -53,8 +53,8 @@ bool WindowController::IsWindowNeedMinimizedByOther(const sptr& targ void WindowController::StartingWindow(sptr info, sptr pixelMap, uint32_t bkgColor, bool isColdStart) { - if (info->GetAbilityToken() == nullptr || info->GetBundleName().find("permission") != std::string::npos) { - WLOGFE("AbilityToken is nullptr!"); + if (!info || info->GetAbilityToken() == nullptr || info->GetBundleName().find("permission") != std::string::npos) { + WLOGFE("info or AbilityToken is nullptr!"); return; } auto node = windowRoot_->FindWindowNodeWithToken(info->GetAbilityToken()); @@ -98,6 +98,10 @@ void WindowController::CancelStartingWindow(sptr abilityToken) WMError WindowController::NotifyWindowTransition(sptr& srcInfo, sptr& dstInfo) { + if (!srcInfo || !dstInfo) { + WLOGFE("srcInfo or dstInfo is nullptr!"); + return WMError::WM_ERROR_NULLPTR; + } auto dstNode = windowRoot_->FindWindowNodeWithToken(dstInfo->GetAbilityToken()); auto srcNode = windowRoot_->FindWindowNodeWithToken(srcInfo->GetAbilityToken()); if (!RemoteAnimation::CheckTransition(srcInfo, srcNode, dstInfo, dstNode)) { @@ -148,7 +152,7 @@ WMError WindowController::CreateWindow(sptr& window, sptr node = windowRoot_->FindWindowNodeWithToken(token); - if (node != nullptr && WindowHelper::IsMainWindow(node->GetWindowType()) && + if (node != nullptr && WindowHelper::IsMainWindow(property->GetWindowType()) && property->GetWindowName().find("permission") == std::string::npos && node->startingWindowShown_) { StartingWindow::HandleClientWindowCreate(node, window, windowId, surfaceNode); windowRoot_->AddDeathRecipient(node);