diff --git a/src/gpu/GrResourceCache.cpp b/src/gpu/GrResourceCache.cpp
index f50ed7d..c683b5b 100644
--- a/src/gpu/GrResourceCache.cpp
+++ b/src/gpu/GrResourceCache.cpp
@@ -6,10 +6,13 @@
  * found in the LICENSE file.
  */
 
+
+
 #include "GrResourceCache.h"
 #include "GrGpuResource.h"
 #include "GrTexturePriv.h"
 
+
 DECLARE_SKMESSAGEBUS_MESSAGE(GrResourceInvalidatedMessage);
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -178,7 +181,7 @@
     // scratch texture reuse is turned off.
     SkASSERT(resource->getCacheEntry());
     if (resource->getCacheEntry()->key().getResourceType() == GrTexturePriv::ResourceType() &&
-        resource->getCacheEntry()->key().isScratch() &&
+        resource->fIsScratch &&
         !fCaps->reuseScratchTextures() &&
         !(static_cast<const GrTexture*>(resource)->desc().fFlags &
           kRenderTarget_GrTextureFlagBit)) {
@@ -187,12 +190,12 @@
 }
 
 GrGpuResource* GrResourceCache::find(const GrResourceKey& key) {
-    // GrResourceCache2 is responsible for scratch resources.
-    SkASSERT(!key.isScratch());
-
     GrAutoResourceCacheValidate atcv(this);
 
-    GrResourceCacheEntry* entry = fCache.find(key);
+    GrResourceCacheEntry* entry = NULL;
+
+    entry = fCache.find(key);
+
     if (NULL == entry) {
         return NULL;
     }
@@ -201,6 +204,8 @@
     this->internalDetach(entry);
     this->attachToHead(entry);
 
+    // GrResourceCache2 is responsible for scratch resources.
+    SkASSERT(GrGpuResource::kNo_IsScratch == entry->resource()->fIsScratch);
     return entry->fResource;
 }
 
