$version = $CLASS->$method(1.23);
is ( "$version" , "1.23" , '1.23 eq "1.23"' );
+ # Test explicit integer
+ $version = $CLASS->$method(23);
+ is ( "$version" , 23 , '23 eq "23"' );
+
# Test quoted number processing
$version = $CLASS->$method("5.005_03");
is ( "$version" , "5.005_03" , '"5.005_03" eq "5.005_03"' );
is ref(ver->qv("1.2.3")), 'ver', 'ver can inherit from version';
}
+ { # discovered while integrating with bleadperl
+ eval {my $v = $CLASS->new([1,2,3]) };
+ like $@, qr/Invalid version format/, 'Do not crash for garbage';
+ eval {my $v = $CLASS->new({1 => 2}) };
+ like $@, qr/Invalid version format/, 'Do not crash for garbage';
+ }
+
}
1;
}
#endif
if (sv) {
- Perl_sv_setpvf(aTHX_ sv, "%.9"NVff, SvNVX(ver));
- buf = SvPV(sv, len);
+ Perl_sv_catpvf(aTHX_ sv, "%.9"NVff, SvNVX(ver));
+ len = SvCUR(sv);
+ buf = SvPVX(sv);
}
else {
len = my_snprintf(tbuf, sizeof(tbuf), "%.9"NVff, SvNVX(ver));
else if ( SvUOK(ver) || SvIOK(ver) ) {
version = savesvpv(ver);
}
- else /* must be a string or something like a string */
+ else if ( SvPOK(ver) )/* must be a string or something like a string */
{
STRLEN len;
version = savepvn(SvPV(ver,len), SvCUR(ver));
# endif
#endif
}
+ else
+ {
+ /* no idea what this is */
+ Perl_croak(aTHX_ "Invalid version format (non-numeric data)");
+ }
s = SCAN_VERSION(version, ver, qv);
if ( *s != '\0' )