41 lines
1.4 KiB
Diff
41 lines
1.4 KiB
Diff
diff -up mozilla/security/nss/lib/nss/nssinit.c.784672 mozilla/security/nss/lib/nss/nssinit.c
|
|
--- mozilla/security/nss/lib/nss/nssinit.c.784672 2012-01-26 14:43:46.232357231 -0800
|
|
+++ mozilla/security/nss/lib/nss/nssinit.c 2012-01-26 14:50:55.830512565 -0800
|
|
@@ -944,6 +944,12 @@ NSS_RegisterShutdown(NSS_ShutdownFunc sF
|
|
{
|
|
int i;
|
|
|
|
+ /* make sure our lock and condition variable are initialized one and only
|
|
+ * one time */
|
|
+ if (PR_CallOnce(&nssInitOnce, nss_doLockInit) != PR_SUCCESS) {
|
|
+ return SECFailure;
|
|
+ }
|
|
+
|
|
PZ_Lock(nssInitLock);
|
|
if (!NSS_IsInitialized()) {
|
|
PZ_Unlock(nssInitLock);
|
|
@@ -1002,6 +1008,11 @@ NSS_UnregisterShutdown(NSS_ShutdownFunc
|
|
{
|
|
int i;
|
|
|
|
+ /* make sure our lock and condition variable are initialized one and only
|
|
+ * one time */
|
|
+ if (PR_CallOnce(&nssInitOnce, nss_doLockInit) != PR_SUCCESS) {
|
|
+ return SECFailure;
|
|
+ }
|
|
PZ_Lock(nssInitLock);
|
|
if (!NSS_IsInitialized()) {
|
|
PZ_Unlock(nssInitLock);
|
|
@@ -1192,6 +1203,11 @@ NSS_ShutdownContext(NSSInitContext *cont
|
|
{
|
|
SECStatus rv = SECSuccess;
|
|
|
|
+ /* make sure our lock and condition variable are initialized one and only
|
|
+ * one time */
|
|
+ if (PR_CallOnce(&nssInitOnce, nss_doLockInit) != PR_SUCCESS) {
|
|
+ return SECFailure;
|
|
+ }
|
|
PZ_Lock(nssInitLock);
|
|
/* If one or more threads are in the middle of init, wait for them
|
|
* to complete */
|