зеркало из https://github.com/mozilla/pjs.git
Bugzilla bug 214411: fixed a bug introduced in the previous checkin.
threadid_key_destructor may get called on the primordial thread if the app doesn't call PR_Cleanup and the assertion would fail. Thanks to Gerard Roos <gerard.roos@adnovum.ch> for contributing the patch.
This commit is contained in:
Родитель
41fea65961
Коммит
e45cbf803b
|
@ -187,16 +187,19 @@ static void
|
|||
threadid_key_destructor(void *value)
|
||||
{
|
||||
PRThread *me = (PRThread *)value;
|
||||
PR_ASSERT((me != NULL) && (me->flags & _PR_ATTACHED));
|
||||
/*
|
||||
* The Solaris thread library sets the thread specific
|
||||
* data (the current thread) to NULL before invoking
|
||||
* the destructor. We need to restore it to prevent the
|
||||
* _PR_MD_CURRENT_THREAD() call in _PRI_DetachThread()
|
||||
* from attaching the thread again.
|
||||
*/
|
||||
_PR_MD_SET_CURRENT_THREAD(me);
|
||||
_PRI_DetachThread();
|
||||
PR_ASSERT(me != NULL);
|
||||
/* the thread could be PRIMORDIAL (thus not ATTACHED) */
|
||||
if (me->flags & _PR_ATTACHED) {
|
||||
/*
|
||||
* The Solaris thread library sets the thread specific
|
||||
* data (the current thread) to NULL before invoking
|
||||
* the destructor. We need to restore it to prevent the
|
||||
* _PR_MD_CURRENT_THREAD() call in _PRI_DetachThread()
|
||||
* from attaching the thread again.
|
||||
*/
|
||||
_PR_MD_SET_CURRENT_THREAD(me);
|
||||
_PRI_DetachThread();
|
||||
}
|
||||
}
|
||||
|
||||
void _MD_EarlyInit(void)
|
||||
|
|
Загрузка…
Ссылка в новой задаче