From 4d3d8522adb2df78f6a8713029eb6b13b41094d9 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Tue, 27 Mar 2018 13:43:50 -0600 Subject: [PATCH] regexec.c: Convert one swash to inversion list I'm doing this one-at-a-time for bisection reasons, in case I make a mistake. --- regexec.c | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/regexec.c b/regexec.c index a766564..b4f2f6c 100644 --- a/regexec.c +++ b/regexec.c @@ -518,29 +518,14 @@ S_isFOO_utf8_lc(pTHX_ const U8 classnum, const U8* character) _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG(character, character + UTF8SKIP(character)); - if (classnum < _FIRST_NON_SWASH_CC) { - - /* Initialize the swash unless done already */ - if (! PL_utf8_swash_ptrs[classnum]) { - U8 flags = _CORE_SWASH_INIT_ACCEPT_INVLIST; - PL_utf8_swash_ptrs[classnum] = - _core_swash_init("utf8", - "", - &PL_sv_undef, 1, 0, - PL_XPosix_ptrs[classnum], &flags); - } - - return cBOOL(swash_fetch(PL_utf8_swash_ptrs[classnum], (U8 *) - character, - TRUE /* is UTF */ )); - } - switch ((_char_class_number) classnum) { case _CC_ENUM_SPACE: return is_XPERLSPACE_high(character); case _CC_ENUM_BLANK: return is_HORIZWS_high(character); case _CC_ENUM_XDIGIT: return is_XDIGIT_high(character); case _CC_ENUM_VERTSPACE: return is_VERTWS_high(character); - default: break; + default: + return _invlist_contains_cp(PL_XPosix_ptrs[classnum], + valid_utf8_to_uvchr(character, NULL)); } return FALSE; /* Things like CNTRL are always below 256 */ -- 1.8.3.1