#define VERSION_MAX 0x7FFFFFFF
/*
+=for apidoc_section Versioning
+
=for apidoc prescan_version
Validate that a given string can be parsed as a version object, but doesn't
under = ninstr(raw, raw+len, underscore, underscore + 1);
if (under) {
Move(under + 1, under, raw + len - under - 1, char);
- SvCUR(rv)--;
+ SvCUR_set(rv, SvCUR(rv) - 1);
*SvEND(rv) = '\0';
}
/* this is for consistency with the pure Perl class */
Perl_upg_version(pTHX_ SV *ver, bool qv)
#endif
{
-
-#ifdef dVAR
- dVAR;
-#endif
-
const char *version, *s;
#ifdef SvVOK
const MAGIC *mg;
if ( strNE(locale_name_on_entry, "C")
&& strNE(locale_name_on_entry, "POSIX"))
{
+ /* the setlocale() call might free or overwrite the name */
+ locale_name_on_entry = savepv(locale_name_on_entry);
setlocale(LC_NUMERIC, "C");
}
else { /* This value indicates to the restore code that we didn't
if ( strNE(locale_name_on_entry, "C")
&& strNE(locale_name_on_entry, "POSIX"))
{
+ /* the setlocale() call might free or overwrite the name */
+ locale_name_on_entry = savepv(locale_name_on_entry);
setlocale(LC_NUMERIC, "C");
}
else { /* This value indicates to the restore code that we
#endif
if (sv) {
- Perl_sv_catpvf(aTHX_ sv, "%.9" NVff, SvNVX(ver));
+ Perl_sv_setpvf(aTHX_ sv, "%.9" NVff, SvNVX(ver));
len = SvCUR(sv);
buf = SvPVX(sv);
}
if (locale_name_on_entry) {
setlocale(LC_NUMERIC, locale_name_on_entry);
+ Safefree(locale_name_on_entry);
}
LC_NUMERIC_UNLOCK; /* End critical section */
if (locale_name_on_entry) {
setlocale(LC_NUMERIC, locale_name_on_entry);
+ Safefree(locale_name_on_entry);
LC_NUMERIC_UNLOCK;
}
else if (locale_obj_on_entry == PL_underlying_numeric_obj) {
version = savepvn(SvPV(ver,len), SvCUR(ver));
SAVEFREEPV(version);
#ifndef SvVOK
-# if PERL_VERSION > 5
/* This will only be executed for 5.6.0 - 5.8.0 inclusive */
if ( len >= 3 && !instr(version,".") && !instr(version,"_")) {
/* may be a v-string */
}
}
}
-# endif
#endif
}
#if PERL_VERSION_LT(5,17,2)