X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/8cdde9f826664af3e1c4c5f5f1bd9642d7aee812..46956fadb29bc62645b5b0d289068f480bb639d8:/utf8.c diff --git a/utf8.c b/utf8.c index 511e845..2f4035b 100644 --- a/utf8.c +++ b/utf8.c @@ -1430,17 +1430,22 @@ Perl_utf16_to_utf8(pTHX_ U8* p, U8* d, I32 bytelen, I32 *newlen) *d++ = (U8)(( uv & 0x3f) | 0x80); continue; } - if (uv >= 0xd800 && uv <= 0xdbff) { /* surrogates */ +#define FIRST_HIGH_SURROGATE UNICODE_SURROGATE_FIRST +#define LAST_HIGH_SURROGATE 0xDBFF +#define FIRST_LOW_SURROGATE 0xDC00 +#define LAST_LOW_SURROGATE UNICODE_SURROGATE_LAST + if (uv >= FIRST_HIGH_SURROGATE && uv <= LAST_HIGH_SURROGATE) { 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 < FIRST_LOW_SURROGATE || low > LAST_LOW_SURROGATE) Perl_croak(aTHX_ "Malformed UTF-16 surrogate"); - uv = ((uv - 0xd800) << 10) + (low - 0xdc00) + 0x10000; + uv = ((uv - FIRST_HIGH_SURROGATE) << 10) + + (low - FIRST_LOW_SURROGATE) + 0x10000; } - } else if (uv >= 0xdc00 && uv <= 0xdfff) { + } else if (uv >= FIRST_LOW_SURROGATE && uv <= LAST_LOW_SURROGATE) { Perl_croak(aTHX_ "Malformed UTF-16 surrogate"); } if (uv < 0x10000) { @@ -1512,8 +1517,10 @@ Perl_is_uni_alnumc(pTHX_ UV c) return _is_utf8_FOO(_CC_ALPHANUMERIC, tmpbuf); } -bool /* Internal function so we can deprecate the external one, and call - this one from other deprecated functions in this file */ +/* Internal function so we can deprecate the external one, and call + this one from other deprecated functions in this file */ + +PERL_STATIC_INLINE bool S_is_utf8_idfirst(pTHX_ const U8 *p) { dVAR;