Imported Upstream version 58.1
[platform/upstream/icu.git] / source / common / uarrsort.c
index 22c7697..bb1b5bd 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *
@@ -120,7 +122,7 @@ doInsertionSort(char *array, int32_t length, int32_t itemSize,
         if(insertionPoint<j) {
             char *dest=array+insertionPoint*itemSize;
             uprv_memcpy(pv, item, itemSize);  /* v=array[j] */
-            uprv_memmove(dest+itemSize, dest, (j-insertionPoint)*itemSize);
+            uprv_memmove(dest+itemSize, dest, (j-insertionPoint)*(size_t)itemSize);
             uprv_memcpy(dest, pv, itemSize);  /* array[insertionPoint]=v */
         }
     }
@@ -181,7 +183,7 @@ subQuickSort(char *array, int32_t start, int32_t limit, int32_t itemSize,
         right=limit;
 
         /* x=array[middle] */
-        uprv_memcpy(px, array+((start+limit)/2)*itemSize, itemSize);
+        uprv_memcpy(px, array+(size_t)((start+limit)/2)*itemSize, itemSize);
 
         do {
             while(/* array[left]<x */
@@ -200,9 +202,9 @@ subQuickSort(char *array, int32_t start, int32_t limit, int32_t itemSize,
                 --right;
 
                 if(left<right) {
-                    uprv_memcpy(pw, array+left*itemSize, itemSize);
-                    uprv_memcpy(array+left*itemSize, array+right*itemSize, itemSize);
-                    uprv_memcpy(array+right*itemSize, pw, itemSize);
+                    uprv_memcpy(pw, array+(size_t)left*itemSize, itemSize);
+                    uprv_memcpy(array+(size_t)left*itemSize, array+(size_t)right*itemSize, itemSize);
+                    uprv_memcpy(array+(size_t)right*itemSize, pw, itemSize);
                 }
 
                 ++left;