summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doop.c9
-rwxr-xr-xt/op/ver.t7
2 files changed, 9 insertions, 7 deletions
diff --git a/doop.c b/doop.c
index 06b1b38d5c..4224b0ea13 100644
--- a/doop.c
+++ b/doop.c
@@ -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';