BUG-2825: do not instatiate temporary array 71/35371/5
authorRobert Varga <robert.varga@pantheon.sk>
Thu, 25 Feb 2016 01:57:03 +0000 (02:57 +0100)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 25 Feb 2016 15:23:29 +0000 (15:23 +0000)
Change-Id: I1450116d13f9381d04c01f6a4b4f46a1b840cd9e
Signed-off-by: Robert Varga <robert.varga@pantheon.sk>
model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv6Utils.java

index 9a26ad45358cd4669abaad934519b79c6dc28818..4fdedf44a84855ebbd76c8e555a4aae5137039a0 100644 (file)
@@ -68,25 +68,23 @@ final class Ipv6Utils {
        // FIXME: do not perform a copy, just set the limit here.
        final String address = percentPos == -1 ? ipv6Address : ipv6Address.substring(0, percentPos);
 
-       // FIXME: fixme: use address.charAt() instead
-       char[] src = address.toCharArray();
-
        /* Leading :: requires some special handling. */
        int i = 0;
-       if (src[i] == ':') {
-           Preconditions.checkArgument(src[++i] == ':', "Invalid v6 address '%s'", ipv6Address);
+       if (address.charAt(i) == ':') {
+           // Note ++i side-effect in check
+           Preconditions.checkArgument(address.charAt(++i) == ':', "Invalid v6 address '%s'", ipv6Address);
        }
 
        final byte[] dst = new byte[INADDR6SZ];
 
-       final int src_length = src.length;
+       final int src_length = address.length();
        boolean saw_xdigit = false;
        int val = 0;
        int colonp = -1;
        int j = 0;
        int curtok = i;
        while (i < src_length) {
-           final char ch = src[i++];
+           final char ch = address.charAt(i++);
 
            /* v6 separator */
            if (ch == ':') {