Re: [PATCH] FindBugs: don't use new String(String) in RefDatabase

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2009/7/10 Shawn O. Pearce <spearce@xxxxxxxxxxx>:
>  Yann Simon <yann.simon.fr@xxxxxxxxx> wrote:
>  >
>  > However, using the trick newString = new String(aString.substring(),
>  > i) does not work on all JVM.
>  > With an IBM JVM, the newString will still contain the original array of chars.
>  >
>  > Another solution that work on all JVM could be:
>  > newString = new String(aString.substring(i).toCharArray())
>  > Or
>  > newString = new String(aString.toCharArray(), i, aString.length() - i)
>  >
>  > I like the latter one.
>
>  I prefer this.  It should always do what we want, and at a lower
>  temporary memory footprint (one less copy of the name).  IIRC Robin
>  rejected it earlier because it wasn't obvious what we were doing. I
>  say hogwash, its clear as mud.
>
> +       private static String copy(final String src, final int off, final int end) {
> +               return new StringBuilder(end - off).append(src, off, end).toString();
> +       }
> +

This method is quite clear.
One line javadoc would make it even clearer... :p (and maybe make Robin happy)

And you're right: by using a StringBuilder, we need one less arraycopy.

After committing your change, we can remove the entry to silent FindBugs.
(commit 21c3d82824075cd1f140b3bcf252dfaffe0fc96c)

Yann
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]