From: Jarkko Hietaniemi Date: Thu, 14 Sep 2000 22:40:38 +0000 (+0000) Subject: We don't need to count the high bit bytes, a boolean is enough. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=40826f67d31c2606453337361c7fd592c5548941;p=p5sagit%2Fp5-mst-13.2.git We don't need to count the high bit bytes, a boolean is enough. p4raw-id: //depot/perl@7086 --- diff --git a/sv.c b/sv.c index 039e7d6..a89c49a 100644 --- a/sv.c +++ b/sv.c @@ -2396,28 +2396,25 @@ Convert the PV of an SV to its UTF8-encoded form. void Perl_sv_utf8_upgrade(pTHX_ register SV *sv) { - int hicount; - char *c; - char *s; + char *s, *t; + bool hibit; if (!sv || !SvPOK(sv) || SvUTF8(sv)) return; - /* This function could be much more efficient if we had a FLAG - * to signal if there are any hibit chars in the string + /* This function could be much more efficient if we had a FLAG in SVs + * to signal if there are any hibit chars in the PV. */ - hicount = 0; - for (c = s = SvPVX(sv); c < SvEND(sv); c++) { - if (*c & 0x80) - hicount++; - } + for (s = t = SvPVX(sv), hibit = FALSE; t < SvEND(sv) && !hibit; t++) + if (*t & 0x80) + hibit = TRUE; - if (hicount) { + if (hibit) { STRLEN len = SvCUR(sv) + 1; /* Plus the \0 */ SvPVX(sv) = (char*)bytes_to_utf8((U8*)s, &len); SvCUR(sv) = len - 1; - Safefree(s); /* No longer using what was there before */ SvUTF8_on(sv); + Safefree(s); /* No longer using what was there before */ } }