summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-27 15:54:48 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-03-03 11:36:26 +0000
commita7d90c1eadc5e59f2a3335de324fc0778e5557f1 (patch)
treed6399faf4dc50a71ad3a9a6e01a4b347ea446ab1
parentdcfdd7e5cacd2cf01df7a9a467a7eeeee3348d1d (diff)
downloadqtwebengine-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.cc5
-rw-r--r--chromium/v8/src/torque/type-oracle.cc5
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();
}
}