]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/ucnvsel.cpp
ICU-62108.0.1.tar.gz
[apple/icu.git] / icuSources / common / ucnvsel.cpp
index cc626eecd2e5b0473f104e796c62f5350b922abb..ba062b35ceca8b9b0f62b0cda8874aaa87b4a3e0 100644 (file)
@@ -1,7 +1,9 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2008-2009, International Business Machines
+*   Copyright (C) 2008-2011, International Business Machines
 *   Corporation, Google and others.  All Rights Reserved.
 *
 *******************************************************************************
@@ -26,6 +28,8 @@
 
 #include "unicode/ucnvsel.h"
 
+#if !UCONFIG_NO_CONVERSION
+
 #include <string.h>
 
 #include "unicode/uchar.h"
@@ -755,19 +759,21 @@ ucnvsel_selectForString(const UConverterSelector* sel,
   }
   uprv_memset(mask, ~0, columns *4);
 
-  const UChar *limit;
-  if (length >= 0) {
-    limit = s + length;
-  } else {
-    limit = NULL;
-  }
-
-  while (limit == NULL ? *s != 0 : s != limit) {
-    UChar32 c;
-    uint16_t pvIndex;
-    UTRIE2_U16_NEXT16(sel->trie, s, limit, c, pvIndex);
-    if (intersectMasks(mask, sel->pv+pvIndex, columns)) {
-      break;
+  if(s!=NULL) {
+    const UChar *limit;
+    if (length >= 0) {
+      limit = s + length;
+    } else {
+      limit = NULL;
+    }
+    
+    while (limit == NULL ? *s != 0 : s != limit) {
+      UChar32 c;
+      uint16_t pvIndex;
+      UTRIE2_U16_NEXT16(sel->trie, s, limit, c, pvIndex);
+      if (intersectMasks(mask, sel->pv+pvIndex, columns)) {
+        break;
+      }
     }
   }
   return selectForMask(sel, mask, status);
@@ -798,14 +804,19 @@ ucnvsel_selectForUTF8(const UConverterSelector* sel,
   if (length < 0) {
     length = (int32_t)uprv_strlen(s);
   }
-  const char *limit = s + length;
 
-  while (s != limit) {
-    uint16_t pvIndex;
-    UTRIE2_U8_NEXT16(sel->trie, s, limit, pvIndex);
-    if (intersectMasks(mask, sel->pv+pvIndex, columns)) {
-      break;
+  if(s!=NULL) {
+    const char *limit = s + length;
+    
+    while (s != limit) {
+      uint16_t pvIndex;
+      UTRIE2_U8_NEXT16(sel->trie, s, limit, pvIndex);
+      if (intersectMasks(mask, sel->pv+pvIndex, columns)) {
+        break;
+      }
     }
   }
   return selectForMask(sel, mask, status);
 }
+
+#endif  // !UCONFIG_NO_CONVERSION