fix fEntryCount when we purge a cache entry (bug caught by our validate())
authorreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Wed, 19 Jan 2011 14:30:26 +0000 (14:30 +0000)
committerreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Wed, 19 Jan 2011 14:30:26 +0000 (14:30 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@712 2bbb7eff-a529-9590-31e7-b0007b416f81

src/effects/SkBitmapCache.cpp

index bcbde92..2a3f87a 100644 (file)
@@ -105,11 +105,11 @@ bool SkBitmapCache::find(const void* buffer, size_t size, SkBitmap* bm) const {
 
 void SkBitmapCache::add(const void* buffer, size_t len, const SkBitmap& bm) {
     AutoValidate av(this);
-    
+
     if (fEntryCount == fMaxEntries) {
-        if (fTail) {
-            delete this->detach(fTail);
-        }
+        SkASSERT(fTail);
+        delete this->detach(fTail);
+        fEntryCount -= 1;
     }
 
     Entry* entry = new Entry(buffer, len, bm);
@@ -123,7 +123,7 @@ void SkBitmapCache::add(const void* buffer, size_t len, const SkBitmap& bm) {
 
 void SkBitmapCache::validate() const {
     SkASSERT(fEntryCount >= 0 && fEntryCount <= fMaxEntries);
-    
+
     if (fEntryCount > 0) {
         SkASSERT(NULL == fHead->fPrev);
         SkASSERT(NULL == fTail->fNext);
@@ -141,7 +141,7 @@ void SkBitmapCache::validate() const {
             entry = entry->fNext;
         }
         SkASSERT(count == fEntryCount);
-        
+
         entry = fTail;
         while (entry) {
             count -= 1;
@@ -151,7 +151,7 @@ void SkBitmapCache::validate() const {
     } else {
         SkASSERT(NULL == fHead);
         SkASSERT(NULL == fTail);
-    }            
+    }
 }
 
 #endif