summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtc%netscape.com <devnull@localhost>2003-08-01 02:02:47 +0000
committerwtc%netscape.com <devnull@localhost>2003-08-01 02:02:47 +0000
commitfe48088a7ad5d03406426c5a45b22a611686325c (patch)
tree6d05f97a737c7420e6115e43ee986d1123696164
parentd4d9f885d9a22b333199ed6e47dddb40e89d6f2d (diff)
downloadnss-hg-fe48088a7ad5d03406426c5a45b22a611686325c.tar.gz
Bugzilla bug 214695: fixed incorrect use of PR_AtomicDecrement on reference
counts. The reference count should not be read "naked". Instead, we should simply use the return value of PR_AtomicDecrement for the result of the decrement. Modified Files: dev/devmod.c dev/devslot.c dev/devtoken.c pki/certificate.c pki/pkibase.c
-rw-r--r--security/nss/lib/dev/devmod.c3
-rw-r--r--security/nss/lib/dev/devslot.c3
-rw-r--r--security/nss/lib/dev/devtoken.c3
-rw-r--r--security/nss/lib/pki/certificate.c3
-rw-r--r--security/nss/lib/pki/pkibase.c3
5 files changed, 5 insertions, 10 deletions
diff --git a/security/nss/lib/dev/devmod.c b/security/nss/lib/dev/devmod.c
index 7bd0dd404..43c41bfd0 100644
--- a/security/nss/lib/dev/devmod.c
+++ b/security/nss/lib/dev/devmod.c
@@ -714,8 +714,7 @@ nssModule_Destroy (
)
{
PRUint32 i, numSlots;
- PR_AtomicDecrement(&mod->base.refCount);
- if (mod->base.refCount == 0) {
+ if (PR_AtomicDecrement(&mod->base.refCount) == 0) {
if (mod->numSlots == 0) {
(void)nssModule_Unload(mod);
return nssArena_Destroy(mod->base.arena);
diff --git a/security/nss/lib/dev/devslot.c b/security/nss/lib/dev/devslot.c
index 48bce99b2..e8fbee38d 100644
--- a/security/nss/lib/dev/devslot.c
+++ b/security/nss/lib/dev/devslot.c
@@ -178,8 +178,7 @@ nssSlot_Destroy (
)
{
if (slot) {
- PR_AtomicDecrement(&slot->base.refCount);
- if (slot->base.refCount == 0) {
+ if (PR_AtomicDecrement(&slot->base.refCount) == 0) {
PZ_DestroyLock(slot->base.lock);
#ifdef PURE_STAN_BUILD
nssToken_Destroy(slot->token);
diff --git a/security/nss/lib/dev/devtoken.c b/security/nss/lib/dev/devtoken.c
index de1613c3d..0757bb4ee 100644
--- a/security/nss/lib/dev/devtoken.c
+++ b/security/nss/lib/dev/devtoken.c
@@ -152,8 +152,7 @@ nssToken_Destroy (
)
{
if (tok) {
- PR_AtomicDecrement(&tok->base.refCount);
- if (tok->base.refCount == 0) {
+ if (PR_AtomicDecrement(&tok->base.refCount) == 0) {
PZ_DestroyLock(tok->base.lock);
nssTokenObjectCache_Destroy(tok->cache);
return nssArena_Destroy(tok->base.arena);
diff --git a/security/nss/lib/pki/certificate.c b/security/nss/lib/pki/certificate.c
index f2707f959..f074e77dd 100644
--- a/security/nss/lib/pki/certificate.c
+++ b/security/nss/lib/pki/certificate.c
@@ -131,8 +131,7 @@ nssCertificate_Destroy (
} else {
nssTrustDomain_LockCertCache(td);
}
- PR_AtomicDecrement(&c->object.refCount);
- if (c->object.refCount == 0) {
+ if (PR_AtomicDecrement(&c->object.refCount) == 0) {
/* --- remove cert and UNLOCK storage --- */
if (cc) {
nssCertificateStore_RemoveCertLOCKED(cc->certStore, c);
diff --git a/security/nss/lib/pki/pkibase.c b/security/nss/lib/pki/pkibase.c
index 3d1d3d949..5ee2a4ee9 100644
--- a/security/nss/lib/pki/pkibase.c
+++ b/security/nss/lib/pki/pkibase.c
@@ -106,8 +106,7 @@ nssPKIObject_Destroy (
{
PRUint32 i;
PR_ASSERT(object->refCount > 0);
- PR_AtomicDecrement(&object->refCount);
- if (object->refCount == 0) {
+ if (PR_AtomicDecrement(&object->refCount) == 0) {
for (i=0; i<object->numInstances; i++) {
nssCryptokiObject_Destroy(object->instances[i]);
}