Merge pull request #26765 from neikeq/issue-25959

Mono: Fix crash when re-using script binding after domain reloading
This commit is contained in:
Ignacio Etcheverry 2019-03-07 20:50:37 +01:00 committed by GitHub
commit 4c0b0a6bdd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 0 deletions

View file

@ -985,6 +985,13 @@ bool CSharpLanguage::debug_break(const String &p_error, bool p_allow_continue) {
}
}
void CSharpLanguage::_uninitialize_script_bindings() {
for (Map<Object *, CSharpScriptBinding>::Element *E = script_bindings.front(); E; E = E->next()) {
CSharpScriptBinding &script_binding = E->value();
script_binding.inited = false;
}
}
void CSharpLanguage::set_language_index(int p_idx) {
ERR_FAIL_COND(lang_idx != -1);

View file

@ -309,6 +309,9 @@ class CSharpLanguage : public ScriptLanguage {
Dictionary scripts_metadata;
friend class GDMono;
void _uninitialize_script_bindings();
public:
StringNameCache string_names;

View file

@ -848,6 +848,8 @@ Error GDMono::reload_scripts_domain() {
}
}
CSharpLanguage::get_singleton()->_uninitialize_script_bindings();
Error err = _load_scripts_domain();
if (err != OK) {
ERR_PRINT("Mono: Failed to load scripts domain");