diff options
author | Michael G. Schwern <schwern@pobox.com> | 2001-09-17 09:49:04 +0200 |
---|---|---|
committer | Abhijit Menon-Sen <ams@wiw.org> | 2001-09-17 05:44:50 +0000 |
commit | 8ea155d176f10f47594df1a8dd68b9a4d7345cef (patch) | |
tree | d1825e42866306bc369d1c5eb21e9379ac4c23b1 /pp_sys.c | |
parent | ec385757ddd27dbd1bbd254e8b322dae1caa6318 (diff) | |
download | perl-8ea155d176f10f47594df1a8dd68b9a4d7345cef.tar.gz |
Re: [BUG?] chdir(undef) == chdir() probably a bug
Message-Id: <20010917074904.V1588@blackrider>
(Applied with tweaks to chdir.t and pp_sys.c hunks.)
p4raw-id: //depot/perl@12043
Diffstat (limited to 'pp_sys.c')
-rw-r--r-- | pp_sys.c | 33 |
1 files changed, 14 insertions, 19 deletions
@@ -3375,27 +3375,22 @@ PP(pp_chdir) SV **svp; STRLEN n_a; - if (MAXARG < 1) - tmps = Nullch; - else - tmps = POPpx; - if (!tmps || !*tmps) { - svp = hv_fetch(GvHVn(PL_envgv), "HOME", 4, FALSE); - if (svp) - tmps = SvPV(*svp, n_a); - } - if (!tmps || !*tmps) { - svp = hv_fetch(GvHVn(PL_envgv), "LOGDIR", 6, FALSE); - if (svp) - tmps = SvPV(*svp, n_a); - } + if (MAXARG < 1) { + if (((svp = hv_fetch(GvHVn(PL_envgv), "HOME", 4, FALSE)) + || (svp = hv_fetch(GvHVn(PL_envgv), "LOGDIR", 6, FALSE)) #ifdef VMS - if (!tmps || !*tmps) { - svp = hv_fetch(GvHVn(PL_envgv), "SYS$LOGIN", 9, FALSE); - if (svp) - tmps = SvPV(*svp, n_a); - } + || (svp = hv_fetch(GvHVn(PL_envgv), "SYS$LOGIN", 9, FALSE)) #endif + ) && SvPOK(*svp)) + { + tmps = SvPV(*svp, n_a); + } + else + tmps = Nullch; + } + else + tmps = POPpx; + TAINT_PROPER("chdir"); PUSHi( PerlDir_chdir(tmps) >= 0 ); #ifdef VMS |