* (token removed or logged out), or the search was already done,
* (token logged out), or the search was already done,
get_token_crls_for_cache (  nssTokenObjectCache *cache){    PRStatus status;    nssCryptokiObject **objects;    PRBool *doIt = &cache->doObjectType[cachedCRLs];    PRUint32 i, numObjects;    if (!search_for_objects(cache) ||          cache->searchedObjectType[cachedCRLs] ||         !cache->doObjectType[cachedCRLs])     {	/* Either there was a state change that prevents a search	 * (token removed or logged out), or the search was already done,	 * or CRLs are not being cached.	 */	return PR_SUCCESS;    }    objects = nssToken_FindCRLs(cache->token, NULL,                                nssTokenSearchType_TokenForced,				MAX_LOCAL_CACHE_OBJECTS, &status);    if (status != PR_SUCCESS) {	return status;    }    cache->objects[cachedCRLs] = create_object_array(objects,                                                     doIt,                                                     &numObjects,                                                     &status);    if (status != PR_SUCCESS) {	return status;    }    for (i=0; i<numObjects; i++) {	cache->objects[cachedCRLs][i] = create_crl(objects[i], &status);	if (status != PR_SUCCESS) {	    break;	}    }    if (status == PR_SUCCESS) {	nss_ZFreeIf(objects);    } else {	PRUint32 j;	for (j=0; j<i; j++) {	    /* sigh */	    nssToken_AddRef(cache->objects[cachedCRLs][i]->object->token);	    nssArena_Destroy(cache->objects[cachedCRLs][i]->arena);	}	nssCryptokiObjectArray_Destroy(objects);    }    cache->searchedObjectType[cachedCRLs] = PR_TRUE;    return status;}