environ array fix for VMS
authorCraig A. Berry <craigberry@mac.com>
Thu, 11 Dec 2003 14:35:29 +0000 (08:35 -0600)
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Thu, 11 Dec 2003 23:53:34 +0000 (23:53 +0000)
From: "Craig A. Berry" <craigberry@mac.com>
Message-ID: <3FD8D511.2030805@mac.com>

p4raw-id: //depot/perl@21879

vms/vms.c

index 10bec68..1bbc960 100644 (file)
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -222,6 +222,7 @@ Perl_vmstrnenv(const char *lnm, char *eqv, unsigned long int idx,
           retsts = SS$_NOLOGNAM;
           for (i = 0; environ[i]; i++) { 
             if ((eq = strchr(environ[i],'=')) && 
+                lnmdsc.dsc$w_length == (eq - environ[i]) &&
                 !strncmp(environ[i],uplnm,eq - environ[i])) {
               eq++;
               for (eqvlen = 0; eq[eqvlen]; eqvlen++) eqv[eqvlen] = eq[eqvlen];
@@ -733,8 +734,9 @@ Perl_vmssetenv(pTHX_ char *lnm, char *eqv, struct dsc$descriptor_s **tabvec)
       for (curtab = 0; tabvec[curtab]; curtab++) {
         if (!ivenv && !str$case_blind_compare(tabvec[curtab],&crtlenv)) {
         int i;
-          for (i = 0; environ[i]; i++) { /* Iff it's an environ elt, reset */
+          for (i = 0; environ[i]; i++) { /* If it's an environ elt, reset */
             if ((cp1 = strchr(environ[i],'=')) && 
+                lnmdsc.dsc$w_length == (cp1 - environ[i]) &&
                 !strncmp(environ[i],lnm,cp1 - environ[i])) {
 #ifdef HAS_SETENV
               return setenv(lnm,"",1) ? vaxc$errno : 0;