# HG changeset patch # User dl # Date 1254856835 25200 # Node ID a4fcbe0e04e3b8272b8f10b2b1c12e2849ace89d # Parent 7d4f50f3806ce121ecc586a472dedebf89dca553 6888149: AtomicReferenceArray causes SIGSEGV -> SEGV_MAPERR error Summary: Avoid integer overflow by using long arithmetic Reviewed-by: martin, dholmes diff -r 7d4f50f3806c -r a4fcbe0e04e3 jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java --- a/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java Tue Nov 17 09:44:43 2009 +0000 +++ b/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java Tue Oct 06 12:20:35 2009 -0700 @@ -57,7 +57,7 @@ private long rawIndex(int i) { if (i < 0 || i >= array.length) throw new IndexOutOfBoundsException("index " + i); - return base + i * scale; + return base + (long) i * scale; } /** diff -r 7d4f50f3806c -r a4fcbe0e04e3 jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java --- a/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java Tue Nov 17 09:44:43 2009 +0000 +++ b/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java Tue Oct 06 12:20:35 2009 -0700 @@ -56,7 +56,7 @@ private long rawIndex(int i) { if (i < 0 || i >= array.length) throw new IndexOutOfBoundsException("index " + i); - return base + i * scale; + return base + (long) i * scale; } /** diff -r 7d4f50f3806c -r a4fcbe0e04e3 jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java --- a/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Tue Nov 17 09:44:43 2009 +0000 +++ b/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Tue Oct 06 12:20:35 2009 -0700 @@ -57,7 +57,7 @@ private long rawIndex(int i) { if (i < 0 || i >= array.length) throw new IndexOutOfBoundsException("index " + i); - return base + i * scale; + return base + (long) i * scale; } /**