diff options
author | relyea%netscape.com <devnull@localhost> | 2002-08-02 17:43:36 +0000 |
---|---|---|
committer | relyea%netscape.com <devnull@localhost> | 2002-08-02 17:43:36 +0000 |
commit | f7f06b2343efa0cddf030c07c97eabd30253d416 (patch) | |
tree | ae630011a20f05be2ea29fddc34fe703e321b461 | |
parent | 7d2d407fc38c337635cfe09ef919bf6179ce889f (diff) | |
download | nss-hg-f7f06b2343efa0cddf030c07c97eabd30253d416.tar.gz |
Merge back 3.5 changes to the tip
-rw-r--r-- | security/nss/lib/pki/pkibase.c | 28 |
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; |