diff --git a/mozilla/security/manager/ssl/src/nsCertTree.cpp b/mozilla/security/manager/ssl/src/nsCertTree.cpp index bb49ecc5012..9fe44cddd4e 100644 --- a/mozilla/security/manager/ssl/src/nsCertTree.cpp +++ b/mozilla/security/manager/ssl/src/nsCertTree.cpp @@ -133,11 +133,15 @@ void nsCertTree::ClearCompareHash() } } -void nsCertTree::InitCompareHash() +nsresult nsCertTree::InitCompareHash() { ClearCompareHash(); - PL_DHashTableInit(&mCompareCache, &gMapOps, nsnull, - sizeof(CompareCacheHashEntry), 128); + if (!PL_DHashTableInit(&mCompareCache, &gMapOps, nsnull, + sizeof(CompareCacheHashEntry), 128)) { + mCompareCache.ops = nsnull; + return NS_ERROR_OUT_OF_MEMORY; + } + return NS_OK; } nsCertTree::~nsCertTree() @@ -352,14 +356,15 @@ nsCertTree::GetCertsByTypeFromCache(nsINSSCertCache *aCache, NS_IMETHODIMP nsCertTree::LoadCertsFromCache(nsINSSCertCache *aCache, PRUint32 aType) { - nsresult rv; if (mTreeArray) { FreeCertArray(); delete [] mTreeArray; mTreeArray = NULL; mNumRows = 0; } - InitCompareHash(); + nsresult rv = InitCompareHash(); + if (NS_FAILED(rv)) return rv; + rv = GetCertsByTypeFromCache(aCache, aType, GetCompareFuncFromCertType(aType), &mCompareCache, getter_AddRefs(mCertArray)); @@ -370,14 +375,15 @@ nsCertTree::LoadCertsFromCache(nsINSSCertCache *aCache, PRUint32 aType) NS_IMETHODIMP nsCertTree::LoadCerts(PRUint32 aType) { - nsresult rv; if (mTreeArray) { FreeCertArray(); delete [] mTreeArray; mTreeArray = NULL; mNumRows = 0; } - InitCompareHash(); + nsresult rv = InitCompareHash(); + if (NS_FAILED(rv)) return rv; + rv = GetCertsByType(aType, GetCompareFuncFromCertType(aType), &mCompareCache, getter_AddRefs(mCertArray)); diff --git a/mozilla/security/manager/ssl/src/nsCertTree.h b/mozilla/security/manager/ssl/src/nsCertTree.h index b32c7be5c0b..52db30096e4 100644 --- a/mozilla/security/manager/ssl/src/nsCertTree.h +++ b/mozilla/security/manager/ssl/src/nsCertTree.h @@ -72,7 +72,7 @@ public: sort_CommonName, sort_IssuedDateDescending, sort_Email, sort_None }; protected: - void InitCompareHash(); + nsresult InitCompareHash(); void ClearCompareHash(); void RemoveCacheEntry(void *key);