diff options
author | Tony Cook <tony@develop-help.com> | 2012-03-23 23:36:27 +0100 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2012-05-21 17:51:53 -0700 |
commit | 803e7e8145a1acab70f0b5356329b191cfc8ccd9 (patch) | |
tree | 1257a0f95c4539f8907d182a2ce7b114973b5dc3 /t/bigmem | |
parent | 9fda09b68d4cc65555dcaeb9b4c62d9a2c305264 (diff) | |
download | perl-803e7e8145a1acab70f0b5356329b191cfc8ccd9.tar.gz |
[rt #111730] TODO tests for vec() with large offsets
Diffstat (limited to 't/bigmem')
-rw-r--r-- | t/bigmem/vec.t | 36 |
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"); |