Bug 1356067 - Fix memory leak in nsUrlClassifierLookupCallback::CompletionV4. r?francois
MozReview-Commit-ID: 67ANYHWIRX0
--- 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();