summaryrefslogtreecommitdiff
path: root/t/bigmem
diff options
context:
space:
mode:
authorTony Cook <tony@develop-help.com>2012-03-23 23:36:27 +0100
committerFather Chrysostomos <sprout@cpan.org>2012-05-21 17:51:53 -0700
commit803e7e8145a1acab70f0b5356329b191cfc8ccd9 (patch)
tree1257a0f95c4539f8907d182a2ce7b114973b5dc3 /t/bigmem
parent9fda09b68d4cc65555dcaeb9b4c62d9a2c305264 (diff)
downloadperl-803e7e8145a1acab70f0b5356329b191cfc8ccd9.tar.gz
[rt #111730] TODO tests for vec() with large offsets
Diffstat (limited to 't/bigmem')
-rw-r--r--t/bigmem/vec.t36
1 files changed, 36 insertions, 0 deletions
diff --git a/t/bigmem/vec.t b/t/bigmem/vec.t
new file mode 100644
index 0000000000..ccdbb9bc43
--- /dev/null
+++ b/t/bigmem/vec.t
@@ -0,0 +1,36 @@
+#!perl
+BEGIN {
+ chdir 't';
+ unshift @INC, "../lib";
+}
+
+use strict;
+require './test.pl';
+use Config qw(%Config);
+
+$ENV{PERL_TEST_MEMORY} >= 1
+ or skip_all("Need ~1Gb for this test");
+$Config{ptrsize} >= 8
+ or skip_all("Need 64-bit pointers for this test");
+
+plan(7);
+
+# RT #111730: Negative offset to vec in lvalue context
+local $::TODO = "RT #111730 - vec uses I32 for offsets";
+
+my $v = "";
+ok(scalar eval { vec($v, 0x80000000, 1) = 1 }, "set a bit at a large offset");
+ok(vec($v, 0x80000000, 1), "check a bit at a large offset");
+{ local $::TODO; # succeeds but shouldn't at this point
+ok(scalar eval { vec($v, 0x100000000, 1) = 1 },
+ "set a bit at a larger offset");
+ok(vec($v, 0x100000000, 1), "check a bit at a larger offset");
+
+# real out of range values
+ok(!eval { vec($v, -0x80000000, 1) = 1 },
+ "shouldn't be able to set at a large negative offset");
+}
+ok(!eval { vec($v, -0x100000000, 1) = 1 },
+ "shouldn't be able to set at a larger negative offset");
+
+ok(!vec($v, 0, 1), "make sure we didn't wrap");