From 821de89e69e1998c5f9825591a4687547ad41742 Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Tue, 10 Mar 2015 17:03:21 -0700 Subject: [PATCH] TransactionOutput: take parent hash and index into account in the hashcode. Inserting TransactionOutput's with identical scripts/values but different outpoints into a hashset will work properly now. --- core/src/main/java/org/bitcoinj/core/TransactionOutput.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/bitcoinj/core/TransactionOutput.java b/core/src/main/java/org/bitcoinj/core/TransactionOutput.java index 27f8d6f7..7f8afa8f 100644 --- a/core/src/main/java/org/bitcoinj/core/TransactionOutput.java +++ b/core/src/main/java/org/bitcoinj/core/TransactionOutput.java @@ -461,6 +461,10 @@ public class TransactionOutput extends ChildMessage implements Serializable { @Override public int hashCode() { - return 31 * (int) value + (scriptBytes != null ? Arrays.hashCode(scriptBytes) : 0); + int result = (int) (value ^ (value >>> 32)); + result = 31 * result + Arrays.hashCode(scriptBytes); + if (parent != null) + result *= parent.getHash().hashCode() + getIndex(); + return result; } }