Skip to content

Commit 325c698

Browse files
committed
Merge pull request godotengine#103647 from aaronp64/dictionary_multiple_lookup
Avoid multiple lookups in `Dictionary::operator[]`
2 parents 4c90863 + 7007380 commit 325c698

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

core/variant/dictionary.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,12 @@ Variant &Dictionary::operator[](const Variant &p_key) {
109109
}
110110
return *_p->read_only;
111111
} else {
112-
if (unlikely(!_p->variant_map.has(key))) {
113-
VariantInternal::initialize(&_p->variant_map[key], _p->typed_value.type);
112+
const uint32_t old_size = _p->variant_map.size();
113+
Variant &value = _p->variant_map[key];
114+
if (_p->variant_map.size() > old_size) {
115+
VariantInternal::initialize(&value, _p->typed_value.type);
114116
}
115-
return _p->variant_map[key];
117+
return value;
116118
}
117119
}
118120

0 commit comments

Comments
 (0)