diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2023-06-08 16:55:51 +0200 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-06-08 16:55:51 +0200 |
| commit | b761c3a54da01305e22588708d8c7778a6186c28 (patch) | |
| tree | cff4f2f027065ce149fc9f04eb3ced59f11eafee /core | |
| parent | ab167154099c598e3f057feb2961c59c7b5d7292 (diff) | |
| parent | 543689eeed48c53839790d608f020c9888f7582b (diff) | |
| download | redot-engine-b761c3a54da01305e22588708d8c7778a6186c28.tar.gz | |
Merge pull request #77974 from RandomShaper/fix_gdscr_th_start
Mark thread name setup safe for nodes
Diffstat (limited to 'core')
| -rw-r--r-- | core/core_bind.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/core/core_bind.cpp b/core/core_bind.cpp index 8771aa88cc..193c41ded6 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 |
