]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/inputext.cpp
ICU-64260.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / inputext.cpp
index e74d636c76c3c61c9c2631d512d2d979073dc0ca..ab0b697ea0328605716e155cd37ccd620b24b9b1 100644 (file)
@@ -50,6 +50,7 @@ void InputText::setText(const char *in, int32_t len)
 {
     fInputLen  = 0;
     fC1Bytes   = FALSE;
+    fOnlyTypicalASCII = FALSE; // rdar://56373519
     fRawInput  = (const uint8_t *) in;
     fRawLength = len == -1? (int32_t)uprv_strlen(in) : len;
 }
@@ -163,12 +164,20 @@ void InputText::MungeInput(UBool fStripTags) {
         fByteStats[fInputBytes[srci]] += 1;
     }
 
-    for (int32_t i = 0x80; i <= 0x9F; i += 1) {
+    fOnlyTypicalASCII = TRUE; // rdar://56373519
+    for (int32_t i = 0x01; i <= 0xFF; i += 1) {
         if (fByteStats[i] != 0) {
-            fC1Bytes = TRUE;
-            break;
+            if ((i < 0x20 && i != 0x09 && i != 0x0A && i != 0x0D) || i > 0x7E) {
+                fOnlyTypicalASCII = FALSE; // rdar://56373519
+                if (i >= 0x80 && i <= 0x9F) {
+                    fC1Bytes = TRUE;
+                }
+            }
         }
     }
+    if (fByteStats[0] > 1) {
+        fOnlyTypicalASCII = FALSE;
+    }
 }
 
 U_NAMESPACE_END