fix handling broken unicode character hang
[platform/upstream/libphonenumber.git] / cpp / src / phonenumbers / utf / unilib.cc
index 918134e..e890f97 100644 (file)
@@ -53,8 +53,8 @@ int SpanInterchangeValid(const char* begin, int byte_length) {
     int bytes_consumed = charntorune(&rune, p, end - p);
     // We want to accept Runeerror == U+FFFD as a valid char, but it is used
     // by chartorune to indicate error. Luckily, the real codepoint is size 3
-    // while errors return bytes_consumed == 1.
-    if ((rune == Runeerror && bytes_consumed == 1) ||
+    // while errors return bytes_consumed <= 1.
+    if ((rune == Runeerror && bytes_consumed <= 1) ||
         !IsInterchangeValidCodepoint(rune)) {
       break;  // Found
     }