Alex Herbert created CODEC-269: ---------------------------------- Summary: MurmurHash3.IncrementalHash32 Key: CODEC-269 URL: https://issues.apache.org/jira/browse/CODEC-269 Project: Commons Codec Issue Type: Bug Affects Versions: 1.13 Reporter: Alex Herbert Assignee: Alex Herbert
The MurmurHash3.IncrementalHash32 end() method alters the current state of the running hash. Thus if called twice it returns different numbers. This can be fixed using: {code:java} public final int end() { // Allow calling end() again after adding no data to return the same result. int result = hash; // ************ // Note: This fails to apply masking using 0xff to the 3 remaining bytes. // ************ int k1 = 0; switch (unprocessedLength) { case 3: k1 ^= unprocessed[2] << 16; case 2: k1 ^= unprocessed[1] << 8; case 1: k1 ^= unprocessed[0]; // mix functions k1 *= C1_32; k1 = Integer.rotateLeft(k1, R1_32); k1 *= C2_32; result ^= k1; } // finalization result ^= totalLen; return fmix32(result); } {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)