diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 2001-03-20 20:04:39 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 2001-03-20 20:04:39 +0000 |
commit | 2b9d42f0ba1bb562fe21327dc7948ab1a5397a19 (patch) | |
tree | aee45626e3738deabafbe610cedef159d4c82d3b /regcomp.c | |
parent | f2f6ab5ed2d2f824b4f6c3085a4a2275c2f8500a (diff) | |
download | perl-2b9d42f0ba1bb562fe21327dc7948ab1a5397a19.tar.gz |
More EBCDIC stuff:
- Loose the extra level of function on ASCII.
- spotted a chr(0) issue in sv.c
- re-work of UTF-X tr/// ranges to work in Unicode
space. Still issues with the "0xff is illegal UTF-8" hack.
- Yet another ad. hoc. utf8 'upgrade' in op.c recoded
(why do it once when you can do it all over the place :-(
- Enable HINTS_UTF8 on EBCDIC - then ignore it in toke.c,
need utf8.pm for swashes.
- Simplified and commented scan_const() in toke.c
Still something wrong regexp and tr (swashes?).
p4raw-id: //depot/perlio@9267
Diffstat (limited to 'regcomp.c')
-rw-r--r-- | regcomp.c | 16 |
1 files changed, 6 insertions, 10 deletions
@@ -2920,9 +2920,7 @@ tryagain: if (ISMULT2(p)) { /* Back off on ?+*. */ if (len) p = oldp; - /* ender is a Unicode value so it can be > 0xff -- - * in other words, do not use UTF8_IS_CONTINUED(). */ - else if (NATIVE_TO_ASCII(ender) >= 0x80 && UTF) { + else if (!UNI_IS_INVARIANT(NATIVE_TO_UNI(ender)) && UTF) { reguni(pRExC_state, ender, s, &numlen); s += numlen; len += numlen; @@ -2933,9 +2931,7 @@ tryagain: } break; } - /* ender is a Unicode value so it can be > 0xff -- - * in other words, do not use UTF8_IS_CONTINUED(). */ - if (NATIVE_TO_ASCII(ender) >= 0x80 && UTF) { + if (!UNI_IS_INVARIANT(NATIVE_TO_UNI(ender)) && UTF) { reguni(pRExC_state, ender, s, &numlen); s += numlen; len += numlen - 1; @@ -4251,7 +4247,7 @@ Perl_regprop(pTHX_ SV *sv, regnode *o) U8 s[UTF8_MAXLEN+1]; for (i = 0; i <= 256; i++) { /* just the first 256 */ - U8 *e = uvuni_to_utf8(s, i); + U8 *e = uvchr_to_utf8(s, i); if (i < 256 && swash_fetch(sw, s)) { if (rangestart == -1) @@ -4261,14 +4257,14 @@ Perl_regprop(pTHX_ SV *sv, regnode *o) if (i <= rangestart + 3) for (; rangestart < i; rangestart++) { - for(e = uvuni_to_utf8(s, rangestart), p = s; p < e; p++) + for(e = uvchr_to_utf8(s, rangestart), p = s; p < e; p++) put_byte(sv, *p); } else { - for (e = uvuni_to_utf8(s, rangestart), p = s; p < e; p++) + for (e = uvchr_to_utf8(s, rangestart), p = s; p < e; p++) put_byte(sv, *p); sv_catpv(sv, "-"); - for (e = uvuni_to_utf8(s, i - 1), p = s; p < e; p++) + for (e = uvchr_to_utf8(s, i - 1), p = s; p < e; p++) put_byte(sv, *p); } rangestart = -1; |