SECItemArray * SECITEM_DupArray(PLArenaPool *arena, const SECItemArray *from) { SECItemArray *result; unsigned int i; /* Require a "from" array. * Reject an inconsistent "from" array with NULL data and nonzero length. * However, allow a "from" array of zero length. */ if (!from || (!from->items && from->len)) return NULL; result = SECITEM_AllocArray(arena, NULL, from->len); if (!result) return NULL; for (i = 0; i < from->len; ++i) { SECStatus rv = SECITEM_CopyItem(arena, &result->items[i], &from->items[i]); if (rv != SECSuccess) { SECITEM_ZfreeArray(result, PR_TRUE); return NULL; } } return result; }
SECItemArray * SECITEM_DupArray(PLArenaPool *arena, const SECItemArray *from) { SECItemArray *result; unsigned int i; if (!from || !from->items || !from->len) return NULL; result = SECITEM_AllocArray(arena, NULL, from->len); if (!result) return NULL; for (i=0; i<from->len; ++i) { SECStatus rv = SECITEM_CopyItem(arena, &result->items[i], &from->items[i]); if (rv != SECSuccess) { SECITEM_ZfreeArray(result, PR_TRUE); return NULL; } } return result; }