in lightning-core/src/main/java/org/apache/directmemory/lightning/internal/util/UnicodeUtil.java [259:292]
public static boolean validUTF16String( char[] s, int size )
{
for ( int i = 0; i < size; i++ )
{
char ch = s[i];
if ( ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END )
{
if ( i < size - 1 )
{
i++;
char nextCH = s[i];
if ( nextCH >= UNI_SUR_LOW_START && nextCH <= UNI_SUR_LOW_END )
{
// Valid surrogate pair
}
else
{
return false;
}
}
else
{
return false;
}
}
else if ( ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END )
{
// Unmatched low surrogate
return false;
}
}
return true;
}