Bug 1250439 - preven memory leak in Classifier::GetLookupCache. r?gcp draft
authorBogdan Postelnicu <bogdan.postelnicu@softvision.ro>
Wed, 24 Feb 2016 13:34:10 +0200
changeset 334105 c8b51efe8c9e247200883b7ba978a8daf08e51da
parent 334016 5b2baa5e9356644a7ed0b73e422eaff62e159ffb
child 514821 031e86a6526554a471827c6ef1b5feb8fb1aa9d7
push id11447
push userBogdan.Postelnicu@softvision.ro
push dateWed, 24 Feb 2016 11:40:27 +0000
reviewersgcp
bugs1250439
milestone47.0a1
Bug 1250439 - preven memory leak in Classifier::GetLookupCache. r?gcp MozReview-Commit-ID: BlROMq9gFzj
toolkit/components/url-classifier/Classifier.cpp
--- a/toolkit/components/url-classifier/Classifier.cpp
+++ b/toolkit/components/url-classifier/Classifier.cpp
@@ -687,30 +687,30 @@ LookupCache *
 Classifier::GetLookupCache(const nsACString& aTable)
 {
   for (uint32_t i = 0; i < mLookupCaches.Length(); i++) {
     if (mLookupCaches[i]->TableName().Equals(aTable)) {
       return mLookupCaches[i];
     }
   }
 
-  LookupCache *cache = new LookupCache(aTable, mStoreDirectory);
+  UniquePtr<LookupCache> cache(new LookupCache(aTable, mStoreDirectory));
   nsresult rv = cache->Init();
   if (NS_FAILED(rv)) {
     return nullptr;
   }
   rv = cache->Open();
   if (NS_FAILED(rv)) {
     if (rv == NS_ERROR_FILE_CORRUPTED) {
       Reset();
     }
     return nullptr;
   }
-  mLookupCaches.AppendElement(cache);
-  return cache;
+  mLookupCaches.AppendElement(cache.get());
+  return cache.release();
 }
 
 nsresult
 Classifier::ReadNoiseEntries(const Prefix& aPrefix,
                              const nsACString& aTableName,
                              uint32_t aCount,
                              PrefixArray* aNoiseEntries)
 {