summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chromium/third_party/WebKit/Source/core/html/imports/HTMLImportsController.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/chromium/third_party/WebKit/Source/core/html/imports/HTMLImportsController.cpp b/chromium/third_party/WebKit/Source/core/html/imports/HTMLImportsController.cpp
index 182ebb571fc..203d1ee0ab9 100644
--- a/chromium/third_party/WebKit/Source/core/html/imports/HTMLImportsController.cpp
+++ b/chromium/third_party/WebKit/Source/core/html/imports/HTMLImportsController.cpp
@@ -46,9 +46,16 @@ HTMLImportsController::HTMLImportsController(Document& master)
}
void HTMLImportsController::Dispose() {
- for (const auto& loader : loaders_)
- loader->Dispose();
- loaders_.clear();
+ // TODO(tkent): We copy loaders_ before iteration to avoid crashes.
+ // This copy should be unnecessary. loaders_ is not modified during
+ // the iteration. Also, null-check for |loader| should be
+ // unnecessary. crbug.com/843151.
+ LoaderList list;
+ list.swap(loaders_);
+ for (const auto& loader : list) {
+ if (loader)
+ loader->Dispose();
+ }
if (root_) {
root_->Dispose();