summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrelyea%netscape.com <devnull@localhost>2002-08-02 17:43:36 +0000
committerrelyea%netscape.com <devnull@localhost>2002-08-02 17:43:36 +0000
commitf7f06b2343efa0cddf030c07c97eabd30253d416 (patch)
treeae630011a20f05be2ea29fddc34fe703e321b461
parent7d2d407fc38c337635cfe09ef919bf6179ce889f (diff)
downloadnss-hg-f7f06b2343efa0cddf030c07c97eabd30253d416.tar.gz
Merge back 3.5 changes to the tip
-rw-r--r--security/nss/lib/pki/pkibase.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/security/nss/lib/pki/pkibase.c b/security/nss/lib/pki/pkibase.c
index c59cfe3c1..9dab956c9 100644
--- a/security/nss/lib/pki/pkibase.c
+++ b/security/nss/lib/pki/pkibase.c
@@ -842,6 +842,17 @@ loser:
return PR_FAILURE;
}
+static void
+nssPKIObjectCollection_RemoveNode
+(
+ nssPKIObjectCollection *collection,
+ pkiObjectCollectionNode *node
+)
+{
+ PR_REMOVE_LINK(&node->link);
+ collection->size--;
+}
+
static PRStatus
nssPKIObjectCollection_GetObjects
(
@@ -853,23 +864,20 @@ nssPKIObjectCollection_GetObjects
PRUint32 i = 0;
PRCList *link = PR_NEXT_LINK(&collection->head);
pkiObjectCollectionNode *node;
- while (link != &collection->head) {
+ while ((i < rvSize) && (link != &collection->head)) {
node = (pkiObjectCollectionNode *)link;
if (!node->haveObject) {
/* Convert the proto-object to an object */
node->object = (*collection->createObject)(node->object);
if (!node->object) {
link = PR_NEXT_LINK(link);
- PR_REMOVE_LINK(&node->link); /*remove bogus object from list*/
- collection->size--;
+ /*remove bogus object from list*/
+ nssPKIObjectCollection_RemoveNode(collection,node);
continue;
}
node->haveObject = PR_TRUE;
}
rvObjects[i++] = nssPKIObject_AddRef(node->object);
- if (i >= rvSize) {
- break; /* we have all we asked for */
- }
link = PR_NEXT_LINK(link);
}
return PR_SUCCESS;
@@ -891,8 +899,8 @@ nssPKIObjectCollection_Traverse
node->object = (*collection->createObject)(node->object);
if (!node->object) {
link = PR_NEXT_LINK(link);
- PR_REMOVE_LINK(&node->link); /*remove bogus object from list*/
- collection->size--;
+ /*remove bogus object from list*/
+ nssPKIObjectCollection_RemoveNode(collection,node);
continue;
}
node->haveObject = PR_TRUE;
@@ -935,8 +943,8 @@ nssPKIObjectCollection_AddInstanceAsObject
if (!node->haveObject) {
node->object = (*collection->createObject)(node->object);
if (!node->object) {
- PR_REMOVE_LINK(&node->link); /*remove bogus object from list*/
- collection->size--;
+ /*remove bogus object from list*/
+ nssPKIObjectCollection_RemoveNode(collection,node);
return PR_FAILURE;
}
node->haveObject = PR_TRUE;