diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-27 15:54:48 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-03-03 11:36:26 +0000 |
commit | a7d90c1eadc5e59f2a3335de324fc0778e5557f1 (patch) | |
tree | d6399faf4dc50a71ad3a9a6e01a4b347ea446ab1 | |
parent | dcfdd7e5cacd2cf01df7a9a467a7eeeee3348d1d (diff) | |
download | qtwebengine-chromium-a7d90c1eadc5e59f2a3335de324fc0778e5557f1.tar.gz |
Fix undefined range-based for loops in torque
Range-based for is undefined if the container is modified while being
iterated over.
Detected by MSVC.
Change-Id: Id5e530160cd30bb3e0c7ec24837bd4db60d1795b
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
-rw-r--r-- | chromium/v8/src/torque/declaration-visitor.cc | 5 | ||||
-rw-r--r-- | chromium/v8/src/torque/type-oracle.cc | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/chromium/v8/src/torque/declaration-visitor.cc b/chromium/v8/src/torque/declaration-visitor.cc index e0e996f33b9..50bba88d2c2 100644 --- a/chromium/v8/src/torque/declaration-visitor.cc +++ b/chromium/v8/src/torque/declaration-visitor.cc @@ -369,8 +369,9 @@ Callable* DeclarationVisitor::Specialize( } void PredeclarationVisitor::ResolvePredeclarations() { - for (auto& p : GlobalContext::AllDeclarables()) { - if (const TypeAlias* alias = TypeAlias::DynamicCast(p.get())) { + auto it = GlobalContext::AllDeclarables().begin(); + for (; it != GlobalContext::AllDeclarables().end(); ++it) { + if (const TypeAlias* alias = TypeAlias::DynamicCast(it->get())) { CurrentScope::Scope scope_activator(alias->ParentScope()); CurrentSourcePosition::Scope position_activator(alias->Position()); alias->Resolve(); diff --git a/chromium/v8/src/torque/type-oracle.cc b/chromium/v8/src/torque/type-oracle.cc index 47331543fcc..2f35f835d7c 100644 --- a/chromium/v8/src/torque/type-oracle.cc +++ b/chromium/v8/src/torque/type-oracle.cc @@ -18,8 +18,9 @@ TypeOracle::GetAggregateTypes() { // static void TypeOracle::FinalizeAggregateTypes() { - for (const std::unique_ptr<AggregateType>& p : Get().aggregate_types_) { - p->Finalize(); + auto it = Get().aggregate_types_.begin(); + for (; it != Get().aggregate_types_.end(); ++it) { + (*it)->Finalize(); } } |