--- ./nsprpub/pr/src/misc/prenv.c.orig Fri Mar 15 00:21:00 2002 +++ ./nsprpub/pr/src/misc/prenv.c Tue Mar 23 14:42:11 2004 @@ -36,26 +36,12 @@ #include "primpl.h" /* Lock used to lock the environment */ -#if defined(_PR_NO_PREEMPT) -#define _PR_NEW_LOCK_ENV() -#define _PR_DELETE_LOCK_ENV() -#define _PR_LOCK_ENV() -#define _PR_UNLOCK_ENV() -#elif defined(_PR_LOCAL_THREADS_ONLY) -extern _PRCPU * _pr_primordialCPU; -static PRIntn _is; -#define _PR_NEW_LOCK_ENV() -#define _PR_DELETE_LOCK_ENV() -#define _PR_LOCK_ENV() if (_pr_primordialCPU) _PR_INTSOFF(_is); -#define _PR_UNLOCK_ENV() if (_pr_primordialCPU) _PR_INTSON(_is); -#else static PRLock *_pr_envLock = NULL; -#define _PR_NEW_LOCK_ENV() {_pr_envLock = PR_NewLock();} +#define _PR_NEW_LOCK_ENV() {_pr_envLock = PR_NewLock(); PR_ASSERT(NULL != _pr_envLock);} #define _PR_DELETE_LOCK_ENV() \ { if (_pr_envLock) { PR_DestroyLock(_pr_envLock); _pr_envLock = NULL; } } -#define _PR_LOCK_ENV() { if (_pr_envLock) PR_Lock(_pr_envLock); } -#define _PR_UNLOCK_ENV() { if (_pr_envLock) PR_Unlock(_pr_envLock); } -#endif +#define _PR_LOCK_ENV() { if (!_pr_envLock) _PR_NEW_LOCK_ENV(); PR_Lock(_pr_envLock); } +#define _PR_UNLOCK_ENV() { PR_ASSERT(NULL != _pr_envLock); PR_Unlock(_pr_envLock); } /************************************************************************/