diff --git a/core/variant/dictionary.cpp b/core/variant/dictionary.cpp index c094d532705..926ab113c37 100644 --- a/core/variant/dictionary.cpp +++ b/core/variant/dictionary.cpp @@ -101,10 +101,12 @@ Variant &Dictionary::operator[](const Variant &p_key) { } return *_p->read_only; } else { - if (unlikely(!_p->variant_map.has(key))) { - VariantInternal::initialize(&_p->variant_map[key], _p->typed_value.type); + const uint32_t old_size = _p->variant_map.size(); + Variant &value = _p->variant_map[key]; + if (_p->variant_map.size() > old_size) { + VariantInternal::initialize(&value, _p->typed_value.type); } - return _p->variant_map[key]; + return value; } }