diff --git a/cpp/src/phonenumbers/utf/unilib.cc b/cpp/src/phonenumbers/utf/unilib.cc index 918134e8c..e890f9743 100644 --- a/cpp/src/phonenumbers/utf/unilib.cc +++ b/cpp/src/phonenumbers/utf/unilib.cc @@ -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 }