Index: ui/views/widget/widget.cc |
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc |
index de3ac38f969274531808a3cbb822f406c27cf62d..aa128e585040ec6fc7c9000630f55aa50d059e8e 100644 |
--- a/ui/views/widget/widget.cc |
+++ b/ui/views/widget/widget.cc |
@@ -585,6 +585,9 @@ void Widget::Close() { |
if (non_client_view_) |
can_close = non_client_view_->CanClose(); |
sky
2017/04/25 05:04:10
While you're here simplify this to an early return
Evan Stade
2017/04/25 22:52:51
Done.
|
if (can_close) { |
+ // The actions below can cause this function to be called again, so mark |
+ // |this| as closed early. See crbug.com/714334 |
+ widget_closed_ = true; |
SaveWindowPlacement(); |
// During tear-down the top-level focus manager becomes unavailable to |
@@ -599,7 +602,6 @@ void Widget::Close() { |
observer.OnWidgetClosing(this); |
native_widget_->Close(); |
- widget_closed_ = true; |
} |
} |