Index: modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/util/WeakHashMapTest.java =================================================================== --- modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/util/WeakHashMapTest.java (revision 420760) +++ modules/luni/src/test/api/java/org/apache/harmony/luni/tests/java/util/WeakHashMapTest.java (working copy) @@ -15,12 +15,7 @@ package org.apache.harmony.luni.tests.java.util; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.WeakHashMap; +import java.util.*; import junit.framework.TestCase; @@ -117,4 +112,62 @@ assertTrue("Assert 8: iterator not empty", !entrySet.iterator() .hasNext()); } + + /** + * @tests java.util.WeakHashMap#WeakHashMap(Map t) + */ + public void test_constructorMinimalMap() { + try { + new WeakHashMap(new MinimalMap()); + } catch(Throwable e) { + fail("unexpected exception in WeakHashMap(Map) constructor"); + } + } } + + +class MinimalMap implements Map { + public void clear() { + return; + } + public boolean containsKey(Object p0) { + return false; + } + public boolean containsValue(Object p0) { + return false; + } + public Set entrySet() { + return null; + } + public boolean equals(Object p0) { + return false; + } + public Object get(Object p0) { + return null; + } + public int hashCode() { + return 0; + } + public boolean isEmpty() { + return false; + } + public Set keySet() { + return null; + } + public Object put(Object p0, Object p1) { + return null; + } + public void putAll(Map p0) { + return; + } + public Object remove(Object p0) { + return null; + } + public int size() { + return 0; + } + public Collection values() { + return null; + } +} + Index: modules/luni/src/main/java/java/util/WeakHashMap.java =================================================================== --- modules/luni/src/main/java/java/util/WeakHashMap.java (revision 420760) +++ modules/luni/src/main/java/java/util/WeakHashMap.java (working copy) @@ -241,7 +241,9 @@ */ public WeakHashMap(Map map) { this(map.size() < 6 ? 11 : map.size() * 2); - putAll(map); + if(map.entrySet() != null) { + putAll(map); + } } /**