From: Craig A. Berry Date: Thu, 8 Jul 2004 23:19:05 +0000 (-0500) Subject: prime_env_iter and zero-length values on VMS X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ff79d39dc75833c4d7014282008680632389529f;p=p5sagit%2Fp5-mst-13.2.git prime_env_iter and zero-length values on VMS From: "Craig A. Berry" Message-ID: <40EE1CB9.8030407@mac.com> p4raw-id: //depot/perl@23071 --- diff --git a/vms/vms.c b/vms/vms.c index 03f2fbd..1b04dbe 100644 --- a/vms/vms.c +++ b/vms/vms.c @@ -665,7 +665,21 @@ prime_env_iter(void) continue; } PERL_HASH(hash,key,keylen); - sv = newSVpvn(cp2,cp1 - cp2 + 1); + + if (cp1 == cp2 && *cp2 == '.') { + /* A single dot usually means an unprintable character, such as a null + * to indicate a zero-length value. Get the actual value to make sure. + */ + char lnm[LNM$C_NAMLENGTH+1]; + char eqv[LNM$C_NAMLENGTH+1]; + strncpy(lnm, key, keylen); + int trnlen = vmstrnenv(lnm, eqv, 0, fildev, 0); + sv = newSVpvn(eqv, strlen(eqv)); + } + else { + sv = newSVpvn(cp2,cp1 - cp2 + 1); + } + SvTAINTED_on(sv); hv_store(envhv,key,keylen,sv,hash); hv_store(seenhv,key,keylen,&PL_sv_yes,hash);