diff --git a/src/java/com/threerings/miso/tile/AutoFringer.java b/src/java/com/threerings/miso/tile/AutoFringer.java index e15ccc35..1e384d25 100644 --- a/src/java/com/threerings/miso/tile/AutoFringer.java +++ b/src/java/com/threerings/miso/tile/AutoFringer.java @@ -73,13 +73,30 @@ public class AutoFringer @Override public int hashCode () { - int result = Arrays.hashCode(_fringeId); + int result = arrayHashCode(_fringeId); if(_passable) { result++; } return result; } + /** + * Replaces Arrays.hashCode(long a[]) in AutoFringer.hashCode(). + * Arrays.hashCode(long a[]) is undefined for Java 1.4, and this is client code. + */ + protected int arrayHashCode(long a[]) { + if (a == null) + return 0; + + int result = 1; + for (long element : a) { + int elementHash = (int)(element ^ (element >>> 32)); + result = 31 * result + elementHash; + } + + return result; + } + /** The fringe keys of the tiles that went into this tile in the order they were drawn. */ protected long[] _fringeId; }