1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-10 13:00:37 +00:00

Add mutex protecting script bindings map from getting corrupted

This commit is contained in:
Matthew A. Robinson
2021-03-22 11:38:26 -04:00
parent c0b3ad2f7b
commit b4455ffd75

View File

@@ -90,7 +90,11 @@ void tie_managed_to_unmanaged(MonoObject *managed, Object *unmanaged) {
// The object was just created, no script instance binding should have been attached
CRASH_COND(unmanaged->has_script_instance_binding(CSharpLanguage::get_singleton()->get_language_index()));
void *data = (void *)CSharpLanguage::get_singleton()->insert_script_binding(unmanaged, script_binding);
void *data;
{
MutexLock lock(CSharpLanguage::get_singleton()->get_language_bind_mutex());
data = (void *)CSharpLanguage::get_singleton()->insert_script_binding(unmanaged, script_binding);
}
// Should be thread safe because the object was just created and nothing else should be referencing it
unmanaged->set_script_instance_binding(CSharpLanguage::get_singleton()->get_language_index(), data);