if (first) { current = first; do { next = cert_get_next_name_constraint(current); PORT_Free(current); current = next; }while (current != first); }
cert_DecodeNameConstraintSubTree(PRArenaPool   *arena,				 SECItem       **subTree,				 PRBool        permited){    CERTNameConstraint   *current = NULL;    CERTNameConstraint   *first = NULL;    CERTNameConstraint   *last = NULL;    CERTNameConstraint   *next = NULL;    int                  i = 0;    while (subTree[i] != NULL) {	current = cert_DecodeNameConstraint(arena, subTree[i]);	if (current == NULL) {	    goto loser;	}	if (last == NULL) {	    first = last = current;	}	current->l.prev = &(last->l);	current->l.next = last->l.next;	last->l.next = &(current->l);	i++;    }    first->l.prev = &(current->l);    return first;loser:    if (first) {	current = first;	do {	    next = cert_get_next_name_constraint(current);	    PORT_Free(current);	    current = next;	}while (current != first);    }    return NULL;}