Index: tools/SkBitmapRegionDecoderInterface.cpp |
diff --git a/tools/SkBitmapRegionDecoderInterface.cpp b/tools/SkBitmapRegionDecoderInterface.cpp |
index 47de31f4ec01c045ab8dad11059b0f292de037e7..eea2441dd239c75fca378f529f6e92179c7708da 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 @@ SkBitmapRegionDecoderInterface* SkBitmapRegionDecoderInterface::CreateBitmapRegi |
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 @@ SkBitmapRegionDecoderInterface* SkBitmapRegionDecoderInterface::CreateBitmapRegi |
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; |