Uploaded image for project: 'Commons Lang'
  1. Commons Lang
  2. LANG-1713

ArrayUtils will return null when adding two null arrays, but undocumented

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 3.13.0
    • 3.15.0
    • lang.*

    Description

       
      The code below makes use of `clone`; however `clone` will return `null` when the array is null.

       

      This means that doing ArrayUtils.addAll(null, null) can return null.  The documentation however makes it appear that this can never happen ("it is always a new array", and "@return The new boolean[] array.")

       
       

      /**

      * <p>Adds all the elements of the given arrays into a new array.

      * <p>The new array contains all of the element of {@code array1} followed

      * by all of the elements {@code array2}. When an array is returned, it is always

      * a new array.

      *

      * <pre>

      * ArrayUtils.addAll(array1, null) = cloned copy of array1

      * ArrayUtils.addAll(null, array2) = cloned copy of array2

      * ArrayUtils.addAll([], []) = []

      * </pre>

      *

      * @param array1 the first array whose elements are added to the new array.

      * @param array2 the second array whose elements are added to the new array.

      * @return The new boolean[] array.

      * @since 2.1

      */

      public static boolean[] addAll(final boolean[] array1, final boolean... array2) {

      if (array1 == null) {

      return clone(array2);

      } else if (array2 == null) {

      return clone(array1);

      }

      final boolean[] joinedArray = new boolean[array1.length + array2.length];

      System.arraycopy(array1, 0, joinedArray, 0, array1.length);

      System.arraycopy(array2, 0, joinedArray, array1.length, array2.length);

      return joinedArray;

      }

      Attachments

        Activity

          People

            Unassigned Unassigned
            john16384 John Hendrikx
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: