You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2013/06/24 21:48:29 UTC

svn commit: r1496182 - in /commons/proper/collections/trunk/src: changes/changes.xml main/java/org/apache/commons/collections4/map/ListOrderedMap.java

Author: sebb
Date: Mon Jun 24 19:48:29 2013
New Revision: 1496182

URL: http://svn.apache.org/r1496182
Log:
COLLECTIONS-474 Exception in ListOrderedMap#putAll if map contains null values

Modified:
    commons/proper/collections/trunk/src/changes/changes.xml
    commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/map/ListOrderedMap.java

Modified: commons/proper/collections/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/changes/changes.xml?rev=1496182&r1=1496181&r2=1496182&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/changes/changes.xml (original)
+++ commons/proper/collections/trunk/src/changes/changes.xml Mon Jun 24 19:48:29 2013
@@ -21,6 +21,12 @@
   </properties>
   <body>
 
+  <release version="4.x" date="TBA" description="TBA">
+    <action issue="COLLECTIONS-474" dev="sebb" type="fix" due-to="Ning Chen ">
+     Exception in ListOrderedMap#putAll if map contains null values.
+    </action>
+  </release>
+
   <release version="4.0" date="TBA" description="Next release">
     <action issue="COLLECTIONS-473" dev="tn" type="update" due-to="sebb">
       Made field "collection" in class "AbstractCollectionDecorator" private and added

Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/map/ListOrderedMap.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/map/ListOrderedMap.java?rev=1496182&r1=1496181&r2=1496182&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/map/ListOrderedMap.java (original)
+++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/map/ListOrderedMap.java Mon Jun 24 19:48:29 2013
@@ -239,12 +239,16 @@ public class ListOrderedMap<K, V>
      * the specified index.
      *
      * @param index the index in the Map to start at.
-     * @param map the Map containing the values to be added.
+     * @param map the Map containing the entries to be added.
      */
     public void putAll(int index, final Map<? extends K, ? extends V> map) {
         for (final Map.Entry<? extends K, ? extends V> entry : map.entrySet()) {
-            final V old = put(index, entry.getKey(), entry.getValue());
-            if (old == null) {
+            final K key = entry.getKey();
+            final boolean contains = containsKey(key);
+            // The return value of put is null if the key did not exist OR the value was null
+            // so it cannot be used to determine whether the key was added
+            put(index, entry.getKey(), entry.getValue());
+            if (!contains) {
                 // if no key was replaced, increment the index
                 index++;
             } else {