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()
|
static void clear_thread_data()
|
||||||
{
|
{
|
||||||
currentThreadData = nullptr;
|
set_thread_data(nullptr);
|
||||||
pthread_setspecific(current_thread_data_key, nullptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
Loading…
Reference in New Issue
Block a user