Fix possible undefined behavior in clear_thread_data
Fix possible undefined behavior in clear_thread_data. The key used in pthread_setspecific must be obtained from pthread_key_create or undefined behavior occurs. Use set_thread_data to clear it since it ensures that the key has been obtained using pthread_key_create by calling pthread_once using create_current_thread_data_key. Fixes crash when closing threaded qt apps on NetBSD. Pick-to: 5.15 6.2 6.3 6.4 Change-Id: I1c7d2628f4248e00a12724a952568f7d92011986 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
619cb795b2
commit
6d93053303
@ -137,8 +137,7 @@ static void set_thread_data(QThreadData *data)
|
||||
|
||||
static void clear_thread_data()
|
||||
{
|
||||
currentThreadData = nullptr;
|
||||
pthread_setspecific(current_thread_data_key, nullptr);
|
||||
set_thread_data(nullptr);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
Loading…
Reference in New Issue
Block a user