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)