* avoid crash of operation on an invalid entry while erase set iterator. * fix notification removal crash due to the nullptr presenter --------- Co-authored-by: bill.shen <[email protected]>
@@ -46,7 +46,9 @@ void Notification::NotificationFailed(const std::string& error) {
void Notification::Remove() {}
void Notification::Destroy() {
- presenter()->RemoveNotification(this);
+ if (presenter()) {
+ presenter()->RemoveNotification(this);
+ }
}
} // namespace electron
@@ -27,6 +27,11 @@ base::WeakPtr<Notification> NotificationPresenter::CreateNotification(
void NotificationPresenter::RemoveNotification(Notification* notification) {
+ auto it = notifications_.find(notification);
+ if (it == notifications_.end()) {
+ return;
+
notifications_.erase(notification);
delete notification;