From a3342be368647e67883bc6ba3bea07bb06880b80 Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Fri, 16 Sep 2011 14:32:20 -0700 Subject: [PATCH] [perl #93638] $ENV{LS_COLORS} causes miniperl glob failure On some systems, csh croaks if the LS_COLORS envvar contains something it considers invalid. The easiest and least intrusive fix for now is to localize %ENV before running csh, though eventually it might be nice to use File::Glob in miniperl, either by linking it statically or by inlining it. --- doio.c | 1 + pod/perldelta.pod | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/doio.c b/doio.c index 1edf8d2..838786e 100644 --- a/doio.c +++ b/doio.c @@ -2375,6 +2375,7 @@ Perl_vms_start_glob #endif #endif /* !CSH */ #endif /* !DOSISH */ + save_hash(gv_fetchpvs("ENV", 0, SVt_PVHV)); (void)do_open(PL_last_in_gv, (char*)SvPVX_const(tmpcmd), SvCUR(tmpcmd), FALSE, O_RDONLY, 0, NULL); fp = IoIFP(io); diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 352ae42..37a4d5d 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -798,6 +798,13 @@ Weakening the first argument to an automatically-invoked C method could result in erroneous "DESTROY created new reference" errors or crashes. Now it is an error to weaken a read-only reference. +=item * + +Under miniperl (used to configure modules when perl itself is built), +C now clears %ENV before calling csh, since the latter croaks on some +systems if it does not like the contents of the LS_COLORS enviroment +variable [perl #98662]. + =back =head1 Known Problems -- 1.8.3.1