From 4175388afa47b921aa3f273dcae6cffaccbf3ffb Mon Sep 17 00:00:00 2001 From: "commit-bot@chromium.org" Date: Fri, 9 May 2014 14:33:55 +0000 Subject: QuadTree: don't leak deferred inserts past clear() BUG=skia: R=djsollen@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/277713003 git-svn-id: http://skia.googlecode.com/svn/trunk@14670 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/core/SkQuadTree.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/core/SkQuadTree.cpp') diff --git a/src/core/SkQuadTree.cpp b/src/core/SkQuadTree.cpp index fb02e68c5f..a11613d08b 100644 --- a/src/core/SkQuadTree.cpp +++ b/src/core/SkQuadTree.cpp @@ -46,8 +46,7 @@ static U8CPU child_intersect(const SkIRect& query, const SkIPoint& split) { return intersect; } -SkQuadTree::SkQuadTree(const SkIRect& bounds) - : fRoot(NULL) { +SkQuadTree::SkQuadTree(const SkIRect& bounds) : fRoot(NULL) { SkASSERT((bounds.width() * bounds.height()) > 0); fRootBounds = bounds; } @@ -178,11 +177,14 @@ void SkQuadTree::search(const SkIRect& query, SkTDArray* results) { } void SkQuadTree::clear() { + this->flushDeferredInserts(); if (NULL != fRoot) { this->clear(fRoot); fNodePool.release(fRoot); fRoot = NULL; } + SkASSERT(fEntryPool.allocated() == fEntryPool.available()); + SkASSERT(fNodePool.allocated() == fNodePool.available()); } int SkQuadTree::getDepth() const { -- cgit v1.2.3