| Index: source/common/utrie2_builder.cpp
 | 
| diff --git a/source/common/utrie2_builder.cpp b/source/common/utrie2_builder.cpp
 | 
| index 0815822c5035f708e26e23848de8d1103b177124..664051c5f9bd04066a2ef0f466e365a77899a925 100644
 | 
| --- a/source/common/utrie2_builder.cpp
 | 
| +++ b/source/common/utrie2_builder.cpp
 | 
| @@ -1,3 +1,5 @@
 | 
| +// Copyright (C) 2016 and later: Unicode, Inc. and others.
 | 
| +// License & terms of use: http://www.unicode.org/copyright.html
 | 
|  /*
 | 
|  ******************************************************************************
 | 
|  *
 | 
| @@ -248,11 +250,11 @@ cloneBuilder(const UNewTrie2 *other) {
 | 
|  
 | 
|      /* clone data */
 | 
|      uprv_memcpy(trie->index1, other->index1, sizeof(trie->index1));
 | 
| -    uprv_memcpy(trie->index2, other->index2, other->index2Length*4);
 | 
| +    uprv_memcpy(trie->index2, other->index2, (size_t)other->index2Length*4);
 | 
|      trie->index2NullOffset=other->index2NullOffset;
 | 
|      trie->index2Length=other->index2Length;
 | 
|  
 | 
| -    uprv_memcpy(trie->data, other->data, other->dataLength*4);
 | 
| +    uprv_memcpy(trie->data, other->data, (size_t)other->dataLength*4);
 | 
|      trie->dataNullOffset=other->dataNullOffset;
 | 
|      trie->dataLength=other->dataLength;
 | 
|  
 | 
| @@ -260,7 +262,7 @@ cloneBuilder(const UNewTrie2 *other) {
 | 
|      if(other->isCompacted) {
 | 
|          trie->firstFreeBlock=0;
 | 
|      } else {
 | 
| -        uprv_memcpy(trie->map, other->map, (other->dataLength>>UTRIE2_SHIFT_2)*4);
 | 
| +        uprv_memcpy(trie->map, other->map, ((size_t)other->dataLength>>UTRIE2_SHIFT_2)*4);
 | 
|          trie->firstFreeBlock=other->firstFreeBlock;
 | 
|      }
 | 
|  
 | 
| @@ -540,7 +542,7 @@ allocDataBlock(UNewTrie2 *trie, int32_t copyBlock) {
 | 
|              if(data==NULL) {
 | 
|                  return -1;
 | 
|              }
 | 
| -            uprv_memcpy(data, trie->data, trie->dataLength*4);
 | 
| +            uprv_memcpy(data, trie->data, (size_t)trie->dataLength*4);
 | 
|              uprv_free(trie->data);
 | 
|              trie->data=data;
 | 
|              trie->dataCapacity=capacity;
 | 
| @@ -1402,7 +1404,7 @@ utrie2_freeze(UTrie2 *trie, UTrie2ValueBits valueBits, UErrorCode *pErrorCode) {
 | 
|          /* write 32-bit data values */
 | 
|          trie->data16=NULL;
 | 
|          trie->data32=(uint32_t *)dest16;
 | 
| -        uprv_memcpy(dest16, newTrie->data, newTrie->dataLength*4);
 | 
| +        uprv_memcpy(dest16, newTrie->data, (size_t)newTrie->dataLength*4);
 | 
|          break;
 | 
|      default:
 | 
|          *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
 | 
| 
 |