diff options
author | Christopher Aillon <caillon@fedoraproject.org> | 2007-06-03 19:35:05 +0000 |
---|---|---|
committer | Christopher Aillon <caillon@fedoraproject.org> | 2007-06-03 19:35:05 +0000 |
commit | ac0321ef679589f592fcb29a80f70a0f9334cb4a (patch) | |
tree | 31b76f248a240c5e8d2bd516fd3c081751242c7b /firefox-1.5-thread-cleanup.patch | |
parent | - Final version (diff) | |
download | librewolf-fedora-ff-ac0321ef679589f592fcb29a80f70a0f9334cb4a.tar.gz librewolf-fedora-ff-ac0321ef679589f592fcb29a80f70a0f9334cb4a.tar.bz2 librewolf-fedora-ff-ac0321ef679589f592fcb29a80f70a0f9334cb4a.zip |
- Properly clean up threads with newer NSPR
Diffstat (limited to 'firefox-1.5-thread-cleanup.patch')
-rw-r--r-- | firefox-1.5-thread-cleanup.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/firefox-1.5-thread-cleanup.patch b/firefox-1.5-thread-cleanup.patch new file mode 100644 index 0000000..cfa3873 --- /dev/null +++ b/firefox-1.5-thread-cleanup.patch @@ -0,0 +1,28 @@ +Index: mozilla/xpcom/threads/nsThread.cpp +=================================================================== +RCS file: /cvsroot/mozilla/xpcom/threads/nsThread.cpp,v +retrieving revision 1.58.4.2 +diff -u -r1.58.4.2 nsThread.cpp +--- mozilla/xpcom/threads/nsThread.cpp 1 Oct 2005 18:43:00 -0000 1.58.4.2 ++++ mozilla/xpcom/threads/nsThread.cpp 7 May 2007 19:10:58 -0000 +@@ -470,9 +470,17 @@ + nsThread::Shutdown() + { + if (gMainThread) { +- // XXX nspr doesn't seem to be calling the main thread's destructor +- // callback, so let's help it out: +- nsThread::Exit(NS_STATIC_CAST(nsThread*, gMainThread)); ++ // In most recent versions of NSPR the main thread's destructor ++ // callback will get called. ++ // In older versions of NSPR it will not get called, ++ // (unless we call PR_Cleanup). ++ // Because of that we: ++ // - call the function ourselves ++ // - set the data pointer to NULL to ensure the function will ++ // not get called again by NSPR ++ // The PR_SetThreadPrivate call does both of these. ++ // See also bugs 379550, 362768. ++ PR_SetThreadPrivate(kIThreadSelfIndex, NULL); + nsrefcnt cnt; + NS_RELEASE2(gMainThread, cnt); + NS_WARN_IF_FALSE(cnt == 0, "Main thread being held past XPCOM shutdown."); |