diff options
-rw-r--r-- | lib/utf8.t | 10 | ||||
-rw-r--r-- | utf8.c | 3 | ||||
-rw-r--r-- | utf8.h | 4 |
3 files changed, 16 insertions, 1 deletions
diff --git a/lib/utf8.t b/lib/utf8.t index 70ef1e3294..81ebc22161 100644 --- a/lib/utf8.t +++ b/lib/utf8.t @@ -37,7 +37,7 @@ no utf8; # Ironic, no? # # -plan tests => 146; +plan tests => 150; { # bug id 20001009.001 @@ -431,3 +431,11 @@ SKIP: { qr/Undefined subroutine utf8::moo/, {stderr=>1}, "Check Carp is loaded for AUTOLOADing errors") } + +{ + # failure of is_utf8_char() without NATIVE_TO_UTF on EBCDIC (0260..027F) + ok(utf8::valid(chr(0x250)), "0x250"); + ok(utf8::valid(chr(0x260)), "0x260"); + ok(utf8::valid(chr(0x270)), "0x270"); + ok(utf8::valid(chr(0x280)), "0x280"); +} @@ -209,6 +209,9 @@ S_is_utf8_char_slow(pTHX_ const U8 *s, const STRLEN len) slen = len - 1; s++; +#ifdef EBCDIC + u = NATIVE_TO_UTF(u); +#endif u &= UTF_START_MASK(len); uv = u; ouv = uv; @@ -258,6 +258,9 @@ encoded character. #endif #define SHARP_S_SKIP 2 +#ifdef EBCDIC +/* IS_UTF8_CHAR() is not ported to EBCDIC */ +#else #define IS_UTF8_CHAR_1(p) \ ((p)[0] <= 0x7F) #define IS_UTF8_CHAR_2(p) \ @@ -329,3 +332,4 @@ encoded character. #define IS_UTF8_CHAR_FAST(n) ((n) <= 4) +#endif /* IS_UTF8_CHAR() for UTF-8 */ |