diff options
author | Karl Williamson <public@khwilliamson.com> | 2013-03-29 13:34:59 -0600 |
---|---|---|
committer | Karl Williamson <public@khwilliamson.com> | 2013-08-29 09:56:04 -0600 |
commit | 3d0f8846febc7f75124837422e1b33df546a714d (patch) | |
tree | cfd40afda1fdecc496cef50793e0ea2598f08c9d | |
parent | 56d37426a5bbcf5030800bc4d96e192cd673476b (diff) | |
download | perl-3d0f8846febc7f75124837422e1b33df546a714d.tar.gz |
utf8.c: No need to check for UTF-8 malformations
This function assumes that the input is well-formed UTF-8, even though
until this commit, the prefatory comments didn't say so. The API does
not pass the buffer length, so there is no way it could check for
reading off the end of the buffer. One code path already calls
valid_utf8_to_uvchr(); this changes the remaining code path to correspond.
-rw-r--r-- | utf8.c | 8 |
1 files changed, 3 insertions, 5 deletions
@@ -3118,8 +3118,8 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m /* Note: * Returns the value of property/mapping C<swash> for the first character * of the string C<ptr>. If C<do_utf8> is true, the string C<ptr> is - * assumed to be in utf8. If C<do_utf8> is false, the string C<ptr> is - * assumed to be in native 8-bit encoding. Caches the swatch in C<swash>. + * assumed to be in well-formed utf8. If C<do_utf8> is false, the string C<ptr> + * is assumed to be in native 8-bit encoding. Caches the swatch in C<swash>. * * A "swash" is a hash which contains initially the keys/values set up by * SWASHNEW. The purpose is to be able to completely represent a Unicode @@ -3224,9 +3224,7 @@ Perl_swash_fetch(pTHX_ SV *swash, const U8 *ptr, bool do_utf8) /* If not cached, generate it via swatch_get */ if (!svp || !SvPOK(*svp) || !(tmps = (const U8*)SvPV_const(*svp, slen))) { - const UV code_point = utf8n_to_uvchr(ptr, UTF8_MAXBYTES, 0, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + const UV code_point = valid_utf8_to_uvchr(ptr, NULL); swatch = swatch_get(swash, /* On EBCDIC & ~(0xA0-1) isn't a useful thing to do */ (klen) ? (code_point & ~((UV)needents - 1)) : 0, |