From: Rafael Garcia-Suarez Date: Thu, 25 Jun 2009 17:57:19 +0000 (+0200) Subject: Trim all trailing / from "." in @INC when filling %INC X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e63be7465b2d564165a64209685cfd7026a2005b;p=p5sagit%2Fp5-mst-13.2.git Trim all trailing / from "." in @INC when filling %INC This fixes bug #66942 : as a / was left in the directory name, $INC{"Foo.pm"} for a file loaded from the current directory was given the incorrect value "/Foo.pm". --- diff --git a/pp_ctl.c b/pp_ctl.c index a7f1b76..6bb5b40 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -3489,8 +3489,10 @@ PP(pp_require) tryname = SvPVX_const(namesv); tryrsfp = doopen_pm(tryname, SvCUR(namesv)); if (tryrsfp) { - if (tryname[0] == '.' && tryname[1] == '/') - tryname += 2; + if (tryname[0] == '.' && tryname[1] == '/') { + ++tryname; + while (*++tryname == '/'); + } break; } else if (errno == EMFILE) diff --git a/t/run/runenv.t b/t/run/runenv.t index 03706ed..3628bd0 100644 --- a/t/run/runenv.t +++ b/t/run/runenv.t @@ -15,7 +15,7 @@ BEGIN { require './test.pl' } -plan tests => 76; +plan tests => 78; my $STDOUT = tempfile(); my $STDERR = tempfile(); @@ -147,6 +147,21 @@ try({PERL5OPT => '-Mstrict -Mwarnings'}, "ok", ""); +open F, ">", "Oooof.pm" or die "Can't write Oooof.pm: $!"; +print F "package Oooof; 1;\n"; +close F; +END { 1 while unlink "Oooof.pm" } + +try({PERL5OPT => '-I. -MOooof'}, + ['-e', 'print "ok" if $INC{"Oooof.pm"} eq "Oooof.pm"'], + "ok", + ""); + +try({PERL5OPT => '-I./ -MOooof'}, + ['-e', 'print "ok" if $INC{"Oooof.pm"} eq "Oooof.pm"'], + "ok", + ""); + try({PERL5OPT => '-w -w'}, ['-e', 'print $ENV{PERL5OPT}'], '-w -w',