Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Unified Diff: nspr/pr/src/pthreads/ptsynch.c

Issue 1504923011: Update NSS to 3.21 RTM and NSPR to 4.11 RTM (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/nss
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: nspr/pr/src/pthreads/ptsynch.c
diff --git a/nspr/pr/src/pthreads/ptsynch.c b/nspr/pr/src/pthreads/ptsynch.c
index 03c5720ea638e587295d05c305447968682554b4..8663a4c719770a92020719beffbb44edc6be36ed 100644
--- a/nspr/pr/src/pthreads/ptsynch.c
+++ b/nspr/pr/src/pthreads/ptsynch.c
@@ -322,13 +322,21 @@ PR_IMPLEMENT(PRCondVar*) PR_NewCondVar(PRLock *lock)
PR_ASSERT(lock != NULL);
if (cv != NULL)
{
- int rv = _PT_PTHREAD_COND_INIT(cv->cv, _pt_cvar_attr);
+ int rv = _PT_PTHREAD_COND_INIT(cv->cv, _pt_cvar_attr);
PR_ASSERT(0 == rv);
- cv->lock = lock;
- cv->notify_pending = 0;
+ if (0 == rv)
+ {
+ cv->lock = lock;
+ cv->notify_pending = 0;
#if defined(DEBUG)
- pt_debug.cvars_created += 1;
+ pt_debug.cvars_created += 1;
#endif
+ }
+ else
+ {
+ PR_DELETE(cv);
+ cv = NULL;
+ }
}
return cv;
} /* PR_NewCondVar */
@@ -337,10 +345,13 @@ PR_IMPLEMENT(void) PR_DestroyCondVar(PRCondVar *cvar)
{
if (0 > PR_ATOMIC_DECREMENT(&cvar->notify_pending))
{
- PRIntn rv = pthread_cond_destroy(&cvar->cv); PR_ASSERT(0 == rv);
+ PRIntn rv = pthread_cond_destroy(&cvar->cv);
#if defined(DEBUG)
+ PR_ASSERT(0 == rv);
memset(cvar, 0xaf, sizeof(PRCondVar));
pt_debug.cvars_destroyed += 1;
+#else
+ (void)rv;
#endif
PR_Free(cvar);
}
@@ -1181,9 +1192,17 @@ PR_IMPLEMENT(PRCondVar*) PRP_NewNakedCondVar(void)
if (cv != NULL)
{
int rv;
- rv = _PT_PTHREAD_COND_INIT(cv->cv, _pt_cvar_attr);
+ rv = _PT_PTHREAD_COND_INIT(cv->cv, _pt_cvar_attr);
PR_ASSERT(0 == rv);
- cv->lock = _PR_NAKED_CV_LOCK;
+ if (0 == rv)
+ {
+ cv->lock = _PR_NAKED_CV_LOCK;
+ }
+ else
+ {
+ PR_DELETE(cv);
+ cv = NULL;
+ }
}
return cv;
} /* PRP_NewNakedCondVar */

Powered by Google App Engine
This is Rietveld 408576698