thread_data = pthread_getspecific(display->thread_data_key);
if (!thread_data) {
wl_list_for_each_safe(th_data, th_data_next, &display->threads, link) {
- if (th_data->pid == pid && th_data->tid == tid) {
+ if (th_data && th_data->pid == pid && th_data->tid == tid) {
wl_log("[pid:%d tid:%d] Failed to pthread_getspecific. errno(%d, %m)\n", pid, tid, errno);
thread_data = th_data;
break;
}
+ if (!th_data && !th_data_next)
+ {
+ wl_log("[pid:%d, tid:%d] Invalid thread data stored in threads ! errno(%d, %m)\n", pid, tid, errno);
+ break;
+ }
}
}