diff options
-rw-r--r-- | doop.c | 9 | ||||
-rwxr-xr-x | t/op/ver.t | 7 |
2 files changed, 9 insertions, 7 deletions
@@ -660,12 +660,9 @@ Perl_do_join(pTHX_ register SV *sv, SV *del, register SV **mark, register SV **s if (items-- > 0) { char *s; - if (*mark) { - s = SvPV(*mark, tmplen); - sv_setpvn(sv, s, tmplen); - } - else - sv_setpv(sv, ""); + sv_setpv(sv, ""); + if (*mark) + sv_catsv(sv, *mark); mark++; } else diff --git a/t/op/ver.t b/t/op/ver.t index b08849f53a..5346f392ce 100755 --- a/t/op/ver.t +++ b/t/op/ver.t @@ -5,7 +5,7 @@ BEGIN { unshift @INC, "../lib"; } -print "1..22\n"; +print "1..23\n"; my $test = 1; @@ -72,6 +72,11 @@ print "not " unless sprintf("%*vb", "##", v1.22.333.4444) eq '1##10110##101001101##1000101011100'; print "ok $test\n"; ++$test; +print "not " unless sprintf("%vd", join("", map { chr } + unpack "U*", v2001.2002.2003)) + eq '2001.2002.2003'; +print "ok $test\n"; ++$test; + { use bytes; print "not " unless sprintf("%vd", "Perl") eq '80.101.114.108'; |