we must own/free the generator, even if we fail to return a cacherator

BUG=skia:4332

Review URL: https://codereview.chromium.org/1345523002
diff --git a/src/core/SkImageCacherator.cpp b/src/core/SkImageCacherator.cpp
index bdcd64f..b138853 100644
--- a/src/core/SkImageCacherator.cpp
+++ b/src/core/SkImageCacherator.cpp
@@ -27,6 +27,10 @@
     if (!gen) {
         return nullptr;
     }
+
+    // We are required to take ownership of gen, regardless of if we return a cacherator or not
+    SkAutoTDelete<SkImageGenerator> genHolder(gen);
+
     const SkImageInfo& info = gen->getInfo();
     if (info.isEmpty()) {
         return nullptr;
@@ -46,6 +50,10 @@
         subset = &bounds;
     }
 
+    // Now that we know we can hand-off the generator (to be owned by the cacherator) we can
+    // release our holder. (we DONT want to delete it here anymore)
+    genHolder.detach();
+
     return new SkImageCacherator(gen, gen->getInfo().makeWH(subset->width(), subset->height()),
                                  SkIPoint::Make(subset->x(), subset->y()), uniqueID);
 }