| Index: tests/CodexTest.cpp
 | 
| diff --git a/tests/CodexTest.cpp b/tests/CodexTest.cpp
 | 
| index 32968fdb7a91b06ce62066e4dec51e9d6a2a86bf..f4682055a42d8a67f17a578781774b6536d7e5cb 100644
 | 
| --- a/tests/CodexTest.cpp
 | 
| +++ b/tests/CodexTest.cpp
 | 
| @@ -28,6 +28,19 @@ static void md5(const SkBitmap& bm, SkMD5::Digest* digest) {
 | 
|      md5.finish(*digest);
 | 
|  }
 | 
|  
 | 
| +/**
 | 
| + *  Compute the digest for bm and compare it to a known good digest.
 | 
| + *  @param r Reporter to assert that bm's digest matches goodDigest.
 | 
| + *  @param goodDigest The known good digest to compare to.
 | 
| + *  @param bm The bitmap to test.
 | 
| + */
 | 
| +static void compare_to_good_digest(skiatest::Reporter* r, const SkMD5::Digest& goodDigest,
 | 
| +                           const SkBitmap& bm) {
 | 
| +    SkMD5::Digest digest;
 | 
| +    md5(bm, &digest);
 | 
| +    REPORTER_ASSERT(r, digest == goodDigest);
 | 
| +}
 | 
| +
 | 
|  static void check(skiatest::Reporter* r,
 | 
|                    const char path[],
 | 
|                    SkISize size,
 | 
| @@ -56,8 +69,8 @@ static void check(skiatest::Reporter* r,
 | 
|          codec->getPixels(info, bm.getPixels(), bm.rowBytes(), NULL, NULL, NULL);
 | 
|      REPORTER_ASSERT(r, result == SkCodec::kSuccess);
 | 
|  
 | 
| -    SkMD5::Digest digest1, digest2;
 | 
| -    md5(bm, &digest1);
 | 
| +    SkMD5::Digest digest;
 | 
| +    md5(bm, &digest);
 | 
|  
 | 
|      bm.eraseColor(SK_ColorYELLOW);
 | 
|  
 | 
| @@ -66,25 +79,26 @@ static void check(skiatest::Reporter* r,
 | 
|  
 | 
|      REPORTER_ASSERT(r, result == SkCodec::kSuccess);
 | 
|      // verify that re-decoding gives the same result.
 | 
| -    md5(bm, &digest2);
 | 
| -    REPORTER_ASSERT(r, digest1 == digest2);
 | 
| +    compare_to_good_digest(r, digest, bm);
 | 
|  
 | 
| -    SkScanlineDecoder* scanlineDecoder = codec->getScanlineDecoder(info);
 | 
| +    SkAutoTDelete<SkScanlineDecoder> scanlineDecoder(codec->getScanlineDecoder(info));
 | 
|      if (supportsScanlineDecoding) {
 | 
|          bm.eraseColor(SK_ColorYELLOW);
 | 
|          REPORTER_ASSERT(r, scanlineDecoder);
 | 
|  
 | 
| -        // Regular decodes should be disabled after creating a scanline decoder
 | 
| +        // Regular decodes should not be affected by creating a scanline decoder
 | 
|          result = codec->getPixels(info, bm.getPixels(), bm.rowBytes(), NULL, NULL, NULL);
 | 
| -        REPORTER_ASSERT(r, SkCodec::kInvalidParameters == result);
 | 
| +        REPORTER_ASSERT(r, SkCodec::kSuccess == result);
 | 
| +        compare_to_good_digest(r, digest, bm);
 | 
| +
 | 
| +        bm.eraseColor(SK_ColorYELLOW);
 | 
| +
 | 
|          for (int y = 0; y < info.height(); y++) {
 | 
|              result = scanlineDecoder->getScanlines(bm.getAddr(0, y), 1, 0);
 | 
|              REPORTER_ASSERT(r, result == SkCodec::kSuccess);
 | 
|          }
 | 
|          // verify that scanline decoding gives the same result.
 | 
| -        SkMD5::Digest digest3;
 | 
| -        md5(bm, &digest3);
 | 
| -        REPORTER_ASSERT(r, digest3 == digest1);
 | 
| +        compare_to_good_digest(r, digest, bm);
 | 
|      } else {
 | 
|          REPORTER_ASSERT(r, !scanlineDecoder);
 | 
|      }
 | 
| 
 |