From 38bcf6189a1b3c9b7a51b2a18a5c4536672c6368 Mon Sep 17 00:00:00 2001 From: Brian Macy Date: Wed, 24 Feb 2021 08:45:34 -0600 Subject: [PATCH] Fix index overflow in quickPartition methods. --- .../java/edu/mines/jtk/util/ArrayMath.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/edu/mines/jtk/util/ArrayMath.java b/core/src/main/java/edu/mines/jtk/util/ArrayMath.java index 029de204..0eca4f8f 100644 --- a/core/src/main/java/edu/mines/jtk/util/ArrayMath.java +++ b/core/src/main/java/edu/mines/jtk/util/ArrayMath.java @@ -9253,7 +9253,7 @@ private static void quickPartition(byte[] x, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -9297,7 +9297,7 @@ private static void quickPartition(byte[] x, int[] i, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -9404,7 +9404,7 @@ private static void quickPartition(short[] x, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -9448,7 +9448,7 @@ private static void quickPartition(short[] x, int[] i, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -9555,7 +9555,7 @@ private static void quickPartition(int[] x, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -9599,7 +9599,7 @@ private static void quickPartition(int[] x, int[] i, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -9706,7 +9706,7 @@ private static void quickPartition(long[] x, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -9750,7 +9750,7 @@ private static void quickPartition(long[] x, int[] i, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -9857,7 +9857,7 @@ private static void quickPartition(float[] x, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -9901,7 +9901,7 @@ private static void quickPartition(float[] x, int[] i, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -10008,7 +10008,7 @@ private static void quickPartition(double[] x, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q; @@ -10052,7 +10052,7 @@ private static void quickPartition(double[] x, int[] i, int[] m) { int p = m[0]; int q = m[1]; int n = q-p+1; - int k = (p+q)/2; + int k = (int) (((long) p + (long) q)/2L); if (n>NSMALL_SORT) { int j = p; int l = q;