Bug 1356067 - Fix memory leak in nsUrlClassifierLookupCallback::CompletionV4. r?francois draft
authordimi <dlee@mozilla.com>
Thu, 13 Apr 2017 15:39:30 +0800
changeset 561818 ce77ccbaf04c20d00201d71400c8e3a4072749ff
parent 561690 aca6b2a5a2ab3338436c9e819dc2244a022b6425
child 624099 98e0bbc78bb80d27d74678fb0790c0f737c95b2e
push id53875
push userdlee@mozilla.com
push dateThu, 13 Apr 2017 07:39:47 +0000
reviewersfrancois
bugs1356067
milestone55.0a1
Bug 1356067 - Fix memory leak in nsUrlClassifierLookupCallback::CompletionV4. r?francois MozReview-Commit-ID: 67ANYHWIRX0
toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
--- a/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
@@ -1189,24 +1189,24 @@ nsUrlClassifierLookupCallback::Completio
                                             const nsACString& aTableName,
                                             uint32_t aChunkId)
 {
   LOG(("nsUrlClassifierLookupCallback::Completion [%p, %s, %d]",
        this, PromiseFlatCString(aTableName).get(), aChunkId));
 
   MOZ_ASSERT(!StringEndsWith(aTableName, NS_LITERAL_CSTRING("-proto")));
 
-  auto result = new CacheResultV2;
+  nsAutoPtr<CacheResultV2> result(new CacheResultV2);
 
   result->table = aTableName;
   result->prefix.Assign(aCompleteHash);
   result->completion.Assign(aCompleteHash);
   result->addChunk = aChunkId;
 
-  return ProcessComplete(result);
+  return ProcessComplete(result.forget());
 }
 
 NS_IMETHODIMP
 nsUrlClassifierLookupCallback::CompletionV4(const nsACString& aPartialHash,
                                             const nsACString& aTableName,
                                             uint32_t aNegativeCacheDuration,
                                             nsIArray* aFullHashes)
 {
@@ -1220,17 +1220,17 @@ nsUrlClassifierLookupCallback::Completio
   }
 
   if (aNegativeCacheDuration > MAXIMUM_NEGATIVE_CACHE_DURATION_SEC) {
     LOG(("Negative cache duration too large, clamping it down to"
          "a reasonable value."));
     aNegativeCacheDuration = MAXIMUM_NEGATIVE_CACHE_DURATION_SEC;
   }
 
-  auto result = new CacheResultV4;
+  nsAutoPtr<CacheResultV4> result(new CacheResultV4);
 
   int64_t nowSec = PR_Now() / PR_USEC_PER_SEC;
 
   result->table = aTableName;
   result->prefix.Assign(aPartialHash);
   result->response.negativeCacheExpirySec = nowSec + aNegativeCacheDuration;
 
   // Fill in positive cache entries.
@@ -1247,17 +1247,17 @@ nsUrlClassifierLookupCallback::Completio
     match->GetFullHash(fullHash);
 
     uint32_t duration;
     match->GetCacheDuration(&duration);
 
     result->response.fullHashes.Put(fullHash, nowSec + duration);
   }
 
-  return ProcessComplete(result);
+  return ProcessComplete(result.forget());
 }
 
 nsresult
 nsUrlClassifierLookupCallback::ProcessComplete(CacheResult* aCacheResult)
 {
   // Send this completion to the store for caching.
   if (!mCacheResults) {
     mCacheResults = new CacheResultArray();