John Hendrikx created LANG-1713:
-----------------------------------

             Summary: ArrayUtils will return null when adding two null arrays, 
but undocumented
                 Key: LANG-1713
                 URL: https://issues.apache.org/jira/browse/LANG-1713
             Project: Commons Lang
          Issue Type: Bug
          Components: lang.*
    Affects Versions: 3.13.0
            Reporter: John Hendrikx


 
{color:#000000}The code below makes use of `clone`; however `clone` will return 
`null` when the array is null.{color}

 

{color:#000000}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."){color}

 
 

{color:#3f5fbf}/**{color}

{color:#3f5fbf} * {color}{color:#7f7f9f}<p>{color}{color:#3f5fbf}Adds all the 
elements of the given arrays into a new array.{color}

{color:#3f5fbf} * {color}{color:#7f7f9f}<p>{color}{color:#3f5fbf}The new array 
contains all of the element of \{@code array1} followed{color}

{color:#3f5fbf} * by all of the elements \{@code array2}. When an array is 
returned, it is always{color}

{color:#3f5fbf} * a new array.{color}

{color:#3f5fbf} *{color}

{color:#3f5fbf} * {color}{color:#7f7f9f}<pre>{color}

{color:#3f5fbf} * ArrayUtils.addAll(array1, null) = cloned copy of array1{color}

{color:#3f5fbf} * ArrayUtils.addAll(null, array2) = cloned copy of array2{color}

{color:#3f5fbf} * ArrayUtils.addAll([], []) = []{color}

{color:#3f5fbf} * {color}{color:#7f7f9f}</pre>{color}

{color:#3f5fbf} *{color}

{color:#3f5fbf} * {color}{color:#7f9fbf}@param{color}{color:#3f5fbf} array1 the 
first array whose elements are added to the new array.{color}

{color:#3f5fbf} * {color}{color:#7f9fbf}@param{color}{color:#3f5fbf} array2 the 
second array whose elements are added to the new array.{color}

{color:#3f5fbf} * {color}{color:#7f9fbf}@return{color}{color:#3f5fbf} The new 
boolean[] array.{color}

{color:#3f5fbf} * {color}{color:#7f9fbf}@since{color}{color:#3f5fbf} 2.1{color}

{color:#3f5fbf} */{color}

{color:#000080}public{color}{color:#000000} 
{color}{color:#000080}static{color}{color:#000000} 
{color}{color:#000080}boolean{color}{color:#000000}[] 
{color}{color:#000000}addAll{color}{color:#000000}({color}{color:#000080}final{color}{color:#000000}
 {color}{color:#000080}boolean{color}{color:#000000}[] 
{color}{color:#6a3e3e}array1{color}{color:#000000}, 
{color}{color:#000080}final{color}{color:#000000} 
{color}{color:#000080}boolean{color}{color:#000000}... 
{color}{color:#6a3e3e}array2{color}{color:#000000}) {{color}

{color:#000080}if{color}{color:#000000} 
({color}{color:#6a3e3e}array1{color}{color:#000000} == 
{color}{color:#000080}null{color}{color:#000000}) {{color}

{color:#7f0055}return{color}{color:#000000} 
{color}{color:#000000}clone{color}{color:#000000}({color}{color:#6a3e3e}array2{color}{color:#000000});{color}

{color:#000000} } {color}{color:#000080}else{color}{color:#000000} 
{color}{color:#000080}if{color}{color:#000000} 
({color}{color:#6a3e3e}array2{color}{color:#000000} == 
{color}{color:#000080}null{color}{color:#000000}) {{color}

{color:#7f0055}return{color}{color:#000000} 
{color}{color:#000000}clone{color}{color:#000000}({color}{color:#6a3e3e}array1{color}{color:#000000});{color}

{color:#000000} }{color}

{color:#000080}final{color}{color:#000000} 
{color}{color:#000080}boolean{color}{color:#000000}[] 
{color}{color:#6a3e3e}joinedArray{color}{color:#000000} = 
{color}{color:#000080}new{color}{color:#000000} 
{color}{color:#000080}boolean{color}{color:#000000}[{color}{color:#6a3e3e}array1{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000}
 + 
{color}{color:#6a3e3e}array2{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000}];{color}

{color:#000000} 
System.{color}{color:#000000}arraycopy{color}{color:#000000}({color}{color:#6a3e3e}array1{color}{color:#000000},
 0, {color}{color:#6a3e3e}joinedArray{color}{color:#000000}, 0, 
{color}{color:#6a3e3e}array1{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000});{color}

{color:#000000} 
System.{color}{color:#000000}arraycopy{color}{color:#000000}({color}{color:#6a3e3e}array2{color}{color:#000000},
 0, {color}{color:#6a3e3e}joinedArray{color}{color:#000000}, 
{color}{color:#6a3e3e}array1{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000},
 
{color}{color:#6a3e3e}array2{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000});{color}

{color:#7f0055}return{color}{color:#000000} 
{color}{color:#6a3e3e}joinedArray{color}{color:#000000};{color}

{color:#000000} }{color}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to