| Index: src/utils/SkMD5.cpp
|
| ===================================================================
|
| --- src/utils/SkMD5.cpp (revision 8685)
|
| +++ src/utils/SkMD5.cpp (working copy)
|
| @@ -60,7 +60,7 @@
|
| this->byteCount += inputLength;
|
| }
|
|
|
| -void SkMD5::finish(Digest& digest) {
|
| +void SkMD5::finish(SkHashDigest& digest) {
|
| // Get the number of bits before padding.
|
| uint8_t bits[8];
|
| encode(bits, this->byteCount << 3);
|
| @@ -80,7 +80,17 @@
|
| this->update(bits, 8);
|
|
|
| // Write out digest.
|
| - encode(digest.data, this->state);
|
| + // TODO(epoger): eliminate the extra 16-byte copy, by writing directly into digest.data???
|
| + // NO, we can't do that, because digest.data is immutable (wrapped in SkData).
|
| + // Or:
|
| + // 1. malloc 16 bytes here (wrapped in an SkData object),
|
| + // 2. write the digest into the SkData-wrapped 16 bytes,
|
| + // 3. bump the ref counter on that SkData-wrapped 16 bytes,
|
| + // 4. replace digest's fSkDataPtr with the new one
|
| + size_t digestSize = 16;
|
| + uint8_t tempDigestData[digestSize];
|
| + encode(tempDigestData, this->state);
|
| + digest.copyFrom(tempDigestData, digestSize);
|
|
|
| #if defined(SK_MD5_CLEAR_DATA)
|
| // Clear state.
|
| @@ -90,12 +100,12 @@
|
|
|
| struct F { uint32_t operator()(uint32_t x, uint32_t y, uint32_t z) {
|
| //return (x & y) | ((~x) & z);
|
| - return ((y ^ z) & x) ^ z; //equivelent but faster
|
| + return ((y ^ z) & x) ^ z; //equivalent but faster
|
| }};
|
|
|
| struct G { uint32_t operator()(uint32_t x, uint32_t y, uint32_t z) {
|
| return (x & z) | (y & (~z));
|
| - //return ((x ^ y) & z) ^ y; //equivelent but slower
|
| + //return ((x ^ y) & z) ^ y; //equivalent but slower
|
| }};
|
|
|
| struct H { uint32_t operator()(uint32_t x, uint32_t y, uint32_t z) {
|
|
|