if (!arenaOpt) { rv->arena = arena; }
rv->arena = arena; rv->i_alloced_arena = i_alloced;
nssHash_Create(  NSSArena *arenaOpt,  PRUint32 numBuckets,  PLHashFunction keyHash,  PLHashComparator keyCompare,  PLHashComparator valueCompare){  nssHash *rv;  NSSArena *arena;#ifdef NSSDEBUG  if( arenaOpt && PR_SUCCESS != nssArena_verifyPointer(arenaOpt) ) {    nss_SetError(NSS_ERROR_INVALID_POINTER);    return (nssHash *)NULL;  }#endif /* NSSDEBUG */  if (arenaOpt) {    arena = arenaOpt;  } else {    arena = nssArena_Create();  }  rv = nss_ZNEW(arena, nssHash);  if( (nssHash *)NULL == rv ) {    goto loser;  }  rv->mutex = PZ_NewLock(nssILockOther);  if( (PZLock *)NULL == rv->mutex ) {    goto loser;  }  rv->plHashTable = PL_NewHashTable(numBuckets,                                     keyHash, keyCompare, valueCompare,                                    &nssArenaHashAllocOps, arena);  if( (PLHashTable *)NULL == rv->plHashTable ) {    (void)PZ_DestroyLock(rv->mutex);    goto loser;  }  rv->count = 0;  if (!arenaOpt) {    rv->arena = arena;  }  return rv;loser:  (void)nss_ZFreeIf(rv);  return (nssHash *)NULL;}