From f0f655d4d7d82dceb3d65250941c365a0dcd70aa Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Wed, 5 Mar 2025 15:05:32 -0700 Subject: [PATCH] str_to_version: Use utf8_to_uv_or_die Previously, malformed input would result in a 0 version By redeclaring two variables that are not otherwise used to be U8 and not char, several casts can be avoided. --- toke.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/toke.c b/toke.c index 8655b49c1f49..5672ce113fcd 100644 --- a/toke.c +++ b/toke.c @@ -2351,8 +2351,8 @@ Perl_str_to_version(pTHX_ SV *sv) NV retval = 0.0; NV nshift = 1.0; STRLEN len; - const char *start = SvPV_const(sv,len); - const char * const end = start + len; + const U8 *start = (const U8 *) SvPV_const(sv,len); + const U8 * const end = start + len; const bool utf = cBOOL(SvUTF8(sv)); PERL_ARGS_ASSERT_STR_TO_VERSION; @@ -2361,9 +2361,9 @@ Perl_str_to_version(pTHX_ SV *sv) STRLEN skip; UV n; if (utf) - n = utf8n_to_uvchr((U8*)start, len, &skip, 0); + n = utf8_to_uv_or_die(start, end, &skip); else { - n = *(U8*)start; + n = *start; skip = 1; } retval += ((NV)n)/nshift;