[ https://issues.apache.org/jira/browse/LANG-1713?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sebb reopened LANG-1713: ------------------------ > 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 > Priority: Minor > Labels: Null-Safety, null > Fix For: 3.15.0 > > > > {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)