diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2001-01-05 00:47:23 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-01-05 00:47:23 +0000 |
commit | a0dbb04553005cdbafdeb7435a79ae500b5aa8ff (patch) | |
tree | c3c2af7757f55ba66089c19094e138ecb04cb469 /sv.c | |
parent | 7a800fca3140c85b8a41515633e9bb98c38e5603 (diff) | |
download | perl-a0dbb04553005cdbafdeb7435a79ae500b5aa8ff.tar.gz |
Unify UTF-8 malformedness handling.
p4raw-id: //depot/perl@8323
Diffstat (limited to 'sv.c')
-rw-r--r-- | sv.c | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -4606,17 +4606,18 @@ Perl_sv_pos_b2u(pTHX_ register SV *sv, I32* offsetp) s = (U8*)SvPV(sv, len); if (len < *offsetp) - Perl_croak(aTHX_ "panic: bad byte offset"); + Perl_croak(aTHX_ "panic: sv_pos_b2u: bad byte offset"); send = s + *offsetp; len = 0; while (s < send) { - s += UTF8SKIP(s); - ++len; - } - if (s != send) { - if (ckWARN_d(WARN_UTF8)) - Perl_warner(aTHX_ WARN_UTF8, "Malformed UTF-8 character"); - --len; + STRLEN n; + + if (utf8_to_uv(s, UTF8SKIP(s), &n, 0)) { + s += n; + len++; + } + else + break; } *offsetp = len; return; |