Merge pull request #106636 from Ivorforce/dictionary-mutating-fix

Fix `Dictionary::operator[]` from C++ accidentally modifying `const` dictionaries.
This commit is contained in:
Thaddeus Crews 2025-10-10 10:26:01 -05:00
commit d4a87d9bb3
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
2 changed files with 14 additions and 12 deletions

View file

@ -131,8 +131,10 @@ const Variant &Dictionary::operator[](const Variant &p_key) const {
VariantInternal::initialize(_p->typed_fallback, _p->typed_value.type);
return *_p->typed_fallback;
} else {
// Will not insert key, so no initialization is necessary.
return _p->variant_map[key];
static Variant empty;
const Variant *value = _p->variant_map.getptr(key);
ERR_FAIL_COND_V_MSG(!value, empty, "Bug: Dictionary::operator[] used when there was no value for the given key, please report.");
return *value;
}
}