# HG changeset patch # User martin # Date 1546624765 28800 # Fri Jan 04 09:59:25 2019 -0800 # Node ID 902ca4b1dba31078722877f897094adfed68bb73 # Parent 41af13b70efd71438b6a02d32b680705189e94e7 imported patch loadFactor-isNaN diff --git a/src/java.base/share/classes/java/util/HashMap.java b/src/java.base/share/classes/java/util/HashMap.java --- a/src/java.base/share/classes/java/util/HashMap.java +++ b/src/java.base/share/classes/java/util/HashMap.java @@ -445,7 +445,7 @@ initialCapacity); if (initialCapacity > MAXIMUM_CAPACITY) initialCapacity = MAXIMUM_CAPACITY; - if (loadFactor <= 0 || Float.isNaN(loadFactor)) + if (!(loadFactor > 0)) // also checks for NaNs throw new IllegalArgumentException("Illegal load factor: " + loadFactor); this.loadFactor = loadFactor; @@ -1420,7 +1420,7 @@ // Read in the threshold (ignored), loadfactor, and any hidden stuff s.defaultReadObject(); reinitialize(); - if (loadFactor <= 0 || Float.isNaN(loadFactor)) + if (!(loadFactor > 0)) // also checks for NaNs throw new InvalidObjectException("Illegal load factor: " + loadFactor); s.readInt(); // Read and ignore number of buckets diff --git a/src/java.base/share/classes/java/util/HashSet.java b/src/java.base/share/classes/java/util/HashSet.java --- a/src/java.base/share/classes/java/util/HashSet.java +++ b/src/java.base/share/classes/java/util/HashSet.java @@ -306,7 +306,7 @@ // Read load factor and verify positive and non NaN. float loadFactor = s.readFloat(); - if (loadFactor <= 0 || Float.isNaN(loadFactor)) { + if (!(loadFactor > 0)) { // also checks for NaNs throw new InvalidObjectException("Illegal load factor: " + loadFactor); } diff --git a/src/java.base/share/classes/java/util/Hashtable.java b/src/java.base/share/classes/java/util/Hashtable.java --- a/src/java.base/share/classes/java/util/Hashtable.java +++ b/src/java.base/share/classes/java/util/Hashtable.java @@ -184,10 +184,11 @@ */ public Hashtable(int initialCapacity, float loadFactor) { if (initialCapacity < 0) - throw new IllegalArgumentException("Illegal Capacity: "+ + throw new IllegalArgumentException("Illegal Capacity: " + initialCapacity); - if (loadFactor <= 0 || Float.isNaN(loadFactor)) - throw new IllegalArgumentException("Illegal Load: "+loadFactor); + if (!(loadFactor > 0)) // also checks for NaNs + throw new IllegalArgumentException("Illegal load factor: " + + loadFactor); if (initialCapacity==0) initialCapacity = 1; @@ -1269,8 +1270,9 @@ s.defaultReadObject(); // Validate loadFactor (ignore threshold - it will be re-computed) - if (loadFactor <= 0 || Float.isNaN(loadFactor)) - throw new StreamCorruptedException("Illegal Load: " + loadFactor); + if (!(loadFactor > 0)) // also checks for NaNs + throw new StreamCorruptedException("Illegal load factor: " + + loadFactor); // Read the original length of the array and number of elements int origlength = s.readInt(); diff --git a/src/java.base/share/classes/java/util/WeakHashMap.java b/src/java.base/share/classes/java/util/WeakHashMap.java --- a/src/java.base/share/classes/java/util/WeakHashMap.java +++ b/src/java.base/share/classes/java/util/WeakHashMap.java @@ -211,8 +211,8 @@ if (initialCapacity > MAXIMUM_CAPACITY) initialCapacity = MAXIMUM_CAPACITY; - if (loadFactor <= 0 || Float.isNaN(loadFactor)) - throw new IllegalArgumentException("Illegal Load factor: "+ + if (!(loadFactor > 0)) // also checks for NaNs + throw new IllegalArgumentException("Illegal load factor: " + loadFactor); int capacity = 1; while (capacity < initialCapacity)