summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorHugo van der Sanden <hv@crypt.org>2000-08-20 08:30:46 +0100
committerJarkko Hietaniemi <jhi@iki.fi>2000-08-20 14:06:41 +0000
commit15bb2692a112e58a65a3e260753db74fb4044704 (patch)
tree81e6e2a339cd3698ddd523fcbbd17d67d2767a1d /t
parentf826e675873869b37a797d26b1dd7ba9172dc5f4 (diff)
downloadperl-15bb2692a112e58a65a3e260753db74fb4044704.tar.gz
UTF8 concat fixes.
Subject: [PATCH @6713] Re: [ID 20000815.006] latest patched perl core dumps Message-Id: <200008200630.HAA18053@crypt.compulink.co.uk> p4raw-id: //depot/perl@6719
Diffstat (limited to 't')
-rwxr-xr-xt/op/append.t37
1 files changed, 36 insertions, 1 deletions
diff --git a/t/op/append.t b/t/op/append.t
index d11514615a..afaf6a1d41 100755
--- a/t/op/append.t
+++ b/t/op/append.t
@@ -2,7 +2,7 @@
# $RCSfile: append.t,v $$Revision: 4.1 $$Date: 92/08/07 18:27:36 $
-print "1..3\n";
+print "1..13\n";
$a = 'ab' . 'c'; # compile time
$b = 'def';
@@ -19,3 +19,38 @@ $_ = $a;
$_ .= $b;
print "#3\t:$_: eq :abcdef:\n";
if ($_ eq 'abcdef') {print "ok 3\n";} else {print "not ok 3\n";}
+
+# test that when right argument of concat is UTF8, and is the same
+# variable as the target, and the left argument is not UTF8, it no
+# longer frees the wrong string.
+{
+ sub r2 {
+ my $string = '';
+ $string .= pack("U0a*", 'mnopqrstuvwx');
+ $string = "abcdefghijkl$string";
+ }
+
+ r2() and print "ok $_\n" for qw/ 4 5 /;
+}
+
+# test that nul bytes get copied
+{
+ my($a, $ab) = ("a", "a\000b");
+ my($u, $ub) = map pack("U0a*", $_), $a, $ab;
+ my $t1 = $a; $t1 .= $ab;
+ print $t1 =~ /b/ ? "ok 6\n" : "not ok 6\t# $t1\n";
+ my $t2 = $a; $t2 .= $ub;
+ print $t2 =~ /b/ ? "ok 7\n" : "not ok 7\t# $t2\n";
+ my $t3 = $u; $t3 .= $ab;
+ print $t3 =~ /b/ ? "ok 8\n" : "not ok 8\t# $t3\n";
+ my $t4 = $u; $t4 .= $ub;
+ print $t4 =~ /b/ ? "ok 9\n" : "not ok 9\t# $t4\n";
+ my $t5 = $a; $t5 = $ab . $t5;
+ print $t5 =~ /b/ ? "ok 10\n" : "not ok 10\t# $t5\n";
+ my $t6 = $a; $t6 = $ub . $t6;
+ print $t6 =~ /b/ ? "ok 11\n" : "not ok 11\t# $t6\n";
+ my $t7 = $u; $t7 = $ab . $t7;
+ print $t7 =~ /b/ ? "ok 12\n" : "not ok 12\t# $t7\n";
+ my $t8 = $u; $t8 = $ub . $t8;
+ print $t8 =~ /b/ ? "ok 13\n" : "not ok 13\t# $t8\n";
+}