From 543689eeed48c53839790d608f020c9888f7582b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20J=2E=20Est=C3=A9banez?= Date: Wed, 7 Jun 2023 19:40:30 +0200 Subject: [PATCH] Mark thread name setup safe for nodes --- core/core_bind.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/core_bind.cpp b/core/core_bind.cpp index 8771aa88cc2..193c41ded6a 100644 --- a/core/core_bind.cpp +++ b/core/core_bind.cpp @@ -1187,7 +1187,11 @@ void Thread::_start_func(void *ud) { ERR_FAIL_MSG(vformat("Could not call function '%s' on previously freed instance to start thread %s.", t->target_callable.get_method(), t->get_id())); } + // Finding out a suitable name for the thread can involve querying a node, if the target is one. + // We know this is safe (unless the user is causing life cycle race conditions, which would be a bug on their part). + set_current_thread_safe_for_nodes(true); String func_name = t->target_callable.is_custom() ? t->target_callable.get_custom()->get_as_text() : String(t->target_callable.get_method()); + set_current_thread_safe_for_nodes(false); ::Thread::set_name(func_name); // To avoid a circular reference between the thread and the script which can possibly contain a reference