use XS::APItest qw(utf16_to_utf8 utf16_to_utf8_reversed);
-for my $ord (0, 10, 13, 78, 255, 256, 0xD7FF, 0xE000, 0x10000) {
+for my $ord (0, 10, 13, 78, 255, 256, 0xD7FF, 0xE000, 0xFFFD,
+ 0x10000, 0x10FC00, 0x103FF, 0x10FFFD) {
my $chr = chr $ord;
for my $prefix ('', "\0", 'Perl rules') {
for my $suffix ('', "\0", "Moo!") {
*d++ = (U8)(( uv & 0x3f) | 0x80);
continue;
}
- if (uv >= 0xd800 && uv < 0xdbff) { /* surrogates */
+ if (uv >= 0xd800 && uv <= 0xdbff) { /* surrogates */
if (p >= pend) {
Perl_croak(aTHX_ "Malformed UTF-16 surrogate");
} else {
UV low = (p[0] << 8) + p[1];
p += 2;
- if (low < 0xdc00 || low >= 0xdfff)
+ if (low < 0xdc00 || low > 0xdfff)
Perl_croak(aTHX_ "Malformed UTF-16 surrogate");
uv = ((uv - 0xd800) << 10) + (low - 0xdc00) + 0x10000;
}