You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "John Hendrikx (Jira)" <ji...@apache.org> on 2023/10/05 07:52:00 UTC

[jira] [Created] (LANG-1713) ArrayUtils will return null when adding two null arrays, but undocumented

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)