Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(371)

Unified Diff: trunk/src/ash/root_window_controller.cc

Issue 25659002: Revert 226347 "Fixes use after free caused by delete in RootWind..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | trunk/src/ash/root_window_controller_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/src/ash/root_window_controller.cc
===================================================================
--- trunk/src/ash/root_window_controller.cc (revision 226376)
+++ trunk/src/ash/root_window_controller.cc (working copy)
@@ -437,8 +437,7 @@
workspace_controller_.reset();
aura::client::SetTooltipClient(root_window_.get(), NULL);
- // Explicitly destroy top level windows. We do this as during part of
- // destruction such windows may query the RootWindow for state.
+ // Remove all toplevel windows first.
std::queue<aura::Window*> non_toplevel_windows;
non_toplevel_windows.push(root_window_.get());
while (!non_toplevel_windows.empty()) {
@@ -447,8 +446,6 @@
aura::WindowTracker toplevel_windows;
for (size_t i = 0; i < non_toplevel_window->children().size(); ++i) {
aura::Window* child = non_toplevel_window->children()[i];
- if (!child->owned_by_parent())
- continue;
if (child->delegate())
toplevel_windows.Add(child);
else
@@ -458,14 +455,8 @@
delete *toplevel_windows.windows().begin();
}
// And then remove the containers.
- while (!root_window_->children().empty()) {
- aura::Window* window = root_window_->children()[0];
- if (window->owned_by_parent()) {
- delete window;
- } else {
- root_window_->RemoveChild(window);
- }
- }
+ while (!root_window_->children().empty())
+ delete root_window_->children()[0];
shelf_.reset(NULL);
}
« no previous file with comments | « no previous file | trunk/src/ash/root_window_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698