Fix codec memory leaks in nanobench
SubsetTranslateBench.cpp:
Unref the color table, so it gets deleted.
SkBitmapRegionDecoderInterface.cpp:
Delete the stream if it is not used.
BUG=skia:3418
Review URL: https://codereview.chromium.org/1396113003
diff --git a/bench/subset/SubsetTranslateBench.cpp b/bench/subset/SubsetTranslateBench.cpp
index f6f3d4b..27c628e 100644
--- a/bench/subset/SubsetTranslateBench.cpp
+++ b/bench/subset/SubsetTranslateBench.cpp
@@ -140,7 +140,7 @@
// We create a color table here to satisfy allocPixels() when the output
// type is kIndex8. It's okay that this is uninitialized since we never
// use it.
- SkColorTable* colorTable = new SkColorTable(colors, 0);
+ SkAutoTUnref<SkColorTable> colorTable(new SkColorTable(colors, 0));
for (int count = 0; count < n; count++) {
int width, height;
SkAutoTDelete<SkImageDecoder> decoder(SkImageDecoder::Factory(fStream));
diff --git a/tools/SkBitmapRegionDecoderInterface.cpp b/tools/SkBitmapRegionDecoderInterface.cpp
index 47de31f..eea2441 100644
--- a/tools/SkBitmapRegionDecoderInterface.cpp
+++ b/tools/SkBitmapRegionDecoderInterface.cpp
@@ -13,6 +13,7 @@
SkBitmapRegionDecoderInterface* SkBitmapRegionDecoderInterface::CreateBitmapRegionDecoder(
SkStreamRewindable* stream, Strategy strategy) {
+ SkAutoTDelete<SkStreamRewindable> streamDeleter(stream);
switch (strategy) {
case kOriginal_Strategy: {
SkImageDecoder* decoder = SkImageDecoder::Factory(stream);
@@ -21,7 +22,7 @@
SkDebugf("Error: Could not create image decoder.\n");
return nullptr;
}
- if (!decoder->buildTileIndex(stream, &width, &height)) {
+ if (!decoder->buildTileIndex(streamDeleter.detach(), &width, &height)) {
SkDebugf("Error: Could not build tile index.\n");
delete decoder;
return nullptr;
@@ -29,7 +30,7 @@
return new SkBitmapRegionSampler(decoder, width, height);
}
case kCanvas_Strategy: {
- SkAutoTDelete<SkCodec> codec(SkCodec::NewFromStream(stream));
+ SkAutoTDelete<SkCodec> codec(SkCodec::NewFromStream(streamDeleter.detach()));
if (nullptr == codec) {
SkDebugf("Error: Failed to create decoder.\n");
return nullptr;