A little optimization of InputPointers.copy

Change-Id: Id83b34e076ef91e06d7c1dd2b3ee7bb64d01b8cb
diff --git a/java/proguard.flags b/java/proguard.flags
index ca205b9..376a0e0 100644
--- a/java/proguard.flags
+++ b/java/proguard.flags
@@ -20,6 +20,10 @@
   boolean equalsIgnoreCase(...);
 }
 
+-keep class com.android.inputmethod.latin.InputPointers {
+  *;
+}
+
 -keep class com.android.inputmethod.latin.spellcheck.SpellCheckerSettingsFragment {
   *;
 }
diff --git a/java/src/com/android/inputmethod/latin/InputPointers.java b/java/src/com/android/inputmethod/latin/InputPointers.java
index 9d77d4e..cd53bcd 100644
--- a/java/src/com/android/inputmethod/latin/InputPointers.java
+++ b/java/src/com/android/inputmethod/latin/InputPointers.java
@@ -16,9 +16,6 @@
 
 package com.android.inputmethod.latin;
 
-import java.util.Arrays;
-
-// TODO: Add unit test
 public class InputPointers {
     private final ScalableIntArray mXCoordinates = new ScalableIntArray();
     private final ScalableIntArray mYCoordinates = new ScalableIntArray();
@@ -118,9 +115,10 @@
         }
 
         public void add(int val) {
-            ensureCapacity(mLength);
+            final int nextLength = mLength + 1;
+            ensureCapacity(nextLength);
             mArray[mLength] = val;
-            ++mLength;
+            mLength = nextLength;
         }
 
         public void ensureCapacity(int minimumCapacity) {
@@ -132,7 +130,7 @@
 
         private void grow(int newCapacity) {
             final int[] newArray = new int[newCapacity];
-            System.arraycopy(mArray, 0, newArray, 0, mLength);
+            System.arraycopy(mArray, 0, newArray, 0, mArray.length);
             mArray = newArray;
         }
 
@@ -150,7 +148,8 @@
         }
 
         public void copy(ScalableIntArray ip) {
-            mArray = Arrays.copyOf(ip.mArray, ip.mArray.length);
+            ensureCapacity(ip.mLength);
+            System.arraycopy(ip.mArray, 0, mArray, 0, ip.mLength);
             mLength = ip.mLength;
         }