]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/ustrtrns.cpp
ICU-57165.0.1.tar.gz
[apple/icu.git] / icuSources / common / ustrtrns.cpp
index d702aa8fd6befb097e16b128e6fed6724830d548..00a0bfd5eef3d13335868d47bcb86c1c26a48188 100644 (file)
@@ -1,7 +1,7 @@
 /*
 ******************************************************************************
 *
-*   Copyright (C) 2001-2011, International Business Machines
+*   Copyright (C) 2001-2016, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *
 ******************************************************************************
@@ -291,7 +291,8 @@ utf8_nextCharSafeBodyTerminated(const uint8_t **ps, UChar32 c) {
             illegal=1;
             break;
         }
-    case 2: /*fall through*/
+        U_FALLTHROUGH;
+    case 2:
         trail=(uint8_t)(*s++ - 0x80);
         if(trail>0x3f) {
             /* not a trail byte */
@@ -299,7 +300,8 @@ utf8_nextCharSafeBodyTerminated(const uint8_t **ps, UChar32 c) {
             break;
         }
         c=(c<<6)|trail;
-    case 1: /*fall through*/
+        U_FALLTHROUGH;
+    case 1:
         trail=(uint8_t)(*s++ - 0x80);
         if(trail>0x3f) {
             /* not a trail byte */
@@ -362,11 +364,13 @@ utf8_nextCharSafeBodyPointer(const uint8_t **ps, const uint8_t *limit, UChar32 c
                 illegal=1;
                 break;
             }
-        case 2: /*fall through*/
+            U_FALLTHROUGH;
+        case 2:
             trail=*s++;
             c=(c<<6)|(trail&0x3f);
             illegal|=(trail&0xc0)^0x80;
-        case 1: /*fall through*/
+            U_FALLTHROUGH;
+        case 1:
             trail=*s++;
             c=(c<<6)|(trail&0x3f);
             illegal|=(trail&0xc0)^0x80;
@@ -381,7 +385,7 @@ utf8_nextCharSafeBodyPointer(const uint8_t **ps, const uint8_t *limit, UChar32 c
 
     /* correct sequence - all trail bytes have (b7..b6)==(10)? */
     /* illegal is also set if count>=4 */
-    U_ASSERT(count<sizeof(utf8_minLegal)/sizeof(utf8_minLegal[0]));
+    U_ASSERT(illegal || count<UPRV_LENGTHOF(utf8_minLegal));
     if(illegal || c<utf8_minLegal[count] || U_IS_SURROGATE(c)) {
         /* error handling */
         /* don't go beyond this sequence */
@@ -1310,7 +1314,7 @@ u_strFromJavaModifiedUTF8WithSub(
     }
 
     /* Faster loop without ongoing checking for pSrcLimit and pDestLimit. */
-    pSrcLimit = pSrc + srcLength;
+    pSrcLimit = (pSrc == NULL) ? NULL : pSrc + srcLength;
     for(;;) {
         count = (int32_t)(pDestLimit - pDest);
         srcLength = (int32_t)(pSrcLimit - pSrc);