191f110e0Safresh1#!perl 291f110e0Safresh1BEGIN { 3*b8851fccSafresh1 chdir 't' if -d 't'; 4*b8851fccSafresh1 @INC = "../lib"; 591f110e0Safresh1} 691f110e0Safresh1 791f110e0Safresh1use strict; 891f110e0Safresh1require './test.pl'; 991f110e0Safresh1use Config qw(%Config); 1091f110e0Safresh1 1191f110e0Safresh1$ENV{PERL_TEST_MEMORY} >= 1 1291f110e0Safresh1 or skip_all("Need ~1Gb for this test"); 1391f110e0Safresh1$Config{ptrsize} >= 8 1491f110e0Safresh1 or skip_all("Need 64-bit pointers for this test"); 1591f110e0Safresh1 1691f110e0Safresh1plan(7); 1791f110e0Safresh1 1891f110e0Safresh1# RT #111730: Negative offset to vec in lvalue context 1991f110e0Safresh1 2091f110e0Safresh1my $v = ""; 2191f110e0Safresh1ok(scalar eval { vec($v, 0x80000000, 1) = 1 }, "set a bit at a large offset"); 2291f110e0Safresh1ok(vec($v, 0x80000000, 1), "check a bit at a large offset"); 2391f110e0Safresh1 2491f110e0Safresh1ok(scalar eval { vec($v, 0x100000000, 1) = 1 }, 2591f110e0Safresh1 "set a bit at a larger offset"); 2691f110e0Safresh1ok(vec($v, 0x100000000, 1), "check a bit at a larger offset"); 2791f110e0Safresh1 2891f110e0Safresh1# real out of range values 2991f110e0Safresh1ok(!eval { vec($v, -0x80000000, 1) = 1 }, 3091f110e0Safresh1 "shouldn't be able to set at a large negative offset"); 3191f110e0Safresh1ok(!eval { vec($v, -0x100000000, 1) = 1 }, 3291f110e0Safresh1 "shouldn't be able to set at a larger negative offset"); 3391f110e0Safresh1 3491f110e0Safresh1ok(!vec($v, 0, 1), "make sure we didn't wrap"); 35