diff options
Diffstat (limited to 'tools/SkBitmapRegionDecoderInterface.cpp')
-rw-r--r-- | tools/SkBitmapRegionDecoderInterface.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/tools/SkBitmapRegionDecoderInterface.cpp b/tools/SkBitmapRegionDecoderInterface.cpp index 47de31f4ec..eea2441dd2 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; |