summaryrefslogtreecommitdiff
path: root/pp_sys.c
diff options
context:
space:
mode:
authorMichael G. Schwern <schwern@pobox.com>2001-09-17 09:49:04 +0200
committerAbhijit Menon-Sen <ams@wiw.org>2001-09-17 05:44:50 +0000
commit8ea155d176f10f47594df1a8dd68b9a4d7345cef (patch)
treed1825e42866306bc369d1c5eb21e9379ac4c23b1 /pp_sys.c
parentec385757ddd27dbd1bbd254e8b322dae1caa6318 (diff)
downloadperl-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.c33
1 files changed, 14 insertions, 19 deletions
diff --git a/pp_sys.c b/pp_sys.c
index 70b1660fcd..0fb45215d8 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -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