diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/html/imports/HTMLImportsController.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/html/imports/HTMLImportsController.cpp | 13 |
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(); |