Assemble WAP datagram correctly when segments arrive out of order

The WAP assembly code will always attach the last received segment at the end
of the WAP datagram. Change the code to add the current segment at the correct
location during the WAP datagram assembly.

Change-Id: I4cc18bf33bc68ab9a328a0107f21e3670b5026ac
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
index 623d985..386dc3d46 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
@@ -299,14 +299,16 @@
 
         // Build up the data stream
         ByteArrayOutputStream output = new ByteArrayOutputStream();
-        for (int i = 0; i < totalSegments-1; i++) {
+        for (int i = 0; i < totalSegments; i++) {
             // reassemble the (WSP-)pdu
-            output.write(pdus[i], 0, pdus[i].length);
+            if (i == segment) {
+                // This one isn't in the DB, so add it
+                output.write(pdu, index, pdu.length - index);
+            } else {
+                output.write(pdus[i], 0, pdus[i].length);
+            }
         }
 
-        // This one isn't in the DB, so add it
-        output.write(pdu, index, pdu.length - index);
-
         byte[] datagram = output.toByteArray();
         // Dispatch the PDU to applications
         switch (destinationPort) {