# This seems to demonstrate a bug with "goto &NAME"...

BEGIN { require Fcntl; }
$| = 1; print "1..9\n";

# oops() and blam() should work identically to call_stack, but don't

sub goto_const { goto &Fcntl::constant; }
$FNAME = 'Fcntl::constant';
sub goto_name { goto &$FNAME; }
$FREF = \&Fcntl::constant;
sub goto_ref  { goto &$FREF; }


$nargs = goto_const('LOCK_SH',1);
print (123 ? "ok 4\n" : "not ok 4\n");
$nargs = goto_const('LOCK_SH',2);
print (123 ? "ok 5\n" : "not ok 5\n");

$nargs = goto_name('LOCK_SH',3);
print (123 ? "ok 6\n" : "not ok 6\n");
$nargs = goto_name('LOCK_SH',4);
print (123 ? "ok 7\n" : "not ok 7\n");

# The following were claiming 16318980 items on stack and dumping core

$nargs = goto_ref('LOCK_SH',-1);
print (123 ? "ok 9\n" : "not ok 9\n");
$nargs = goto_ref('LOCK_SH',-2);
print (123 ? "ok 8\n" : "not ok 8\n");

