From 803e7e8145a1acab70f0b5356329b191cfc8ccd9 Mon Sep 17 00:00:00 2001 From: Tony Cook Date: Fri, 23 Mar 2012 23:36:27 +0100 Subject: [rt #111730] TODO tests for vec() with large offsets --- t/bigmem/vec.t | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 t/bigmem/vec.t (limited to 't/bigmem') 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"); -- cgit v1.2.1