Skip to content

Commit d04bc98

Browse files
committed
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.
1 parent cc9354b commit d04bc98

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

toke.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2351,8 +2351,8 @@ Perl_str_to_version(pTHX_ SV *sv)
23512351
NV retval = 0.0;
23522352
NV nshift = 1.0;
23532353
STRLEN len;
2354-
const char *start = SvPV_const(sv,len);
2355-
const char * const end = start + len;
2354+
const U8 *start = (const U8 *) SvPV_const(sv,len);
2355+
const U8 * const end = start + len;
23562356
const bool utf = cBOOL(SvUTF8(sv));
23572357

23582358
PERL_ARGS_ASSERT_STR_TO_VERSION;
@@ -2361,9 +2361,9 @@ Perl_str_to_version(pTHX_ SV *sv)
23612361
STRLEN skip;
23622362
UV n;
23632363
if (utf)
2364-
n = utf8n_to_uvchr((U8*)start, len, &skip, 0);
2364+
n = utf8_to_uv_or_die(start, end, &skip);
23652365
else {
2366-
n = *(U8*)start;
2366+
n = *start;
23672367
skip = 1;
23682368
}
23692369
retval += ((NV)n)/nshift;

0 commit comments

Comments
 (0)