This is a live mirror of the Perl 5 development currently hosted at
Remove the VMS-specific private len in S_mayberelocate.
authorCraig A. Berry <>
Sat, 3 Dec 2011 21:55:26 +0000 (15:55 -0600)
committerCraig A. Berry <>
Sat, 3 Dec 2011 21:55:26 +0000 (15:55 -0600)
This particular C<STRLEN len;> came along almost 15 years ago, way
back in aa6893958c2b.  Back then it was a plain and simple block
scope variable.  But now this code lives in a function that takes
as an argument a variable of the same name and having the same
meaning (i.e., the length of the directory name to be added to
@INC).  Someone looking only at the argument list might reasonably
expect to be able to use len (though luckily there are no subsequent
uses of it currently).  So we really ought to update that len rather
than create our own when we hijack the directory name to make our
unixified version of it.


diff --git a/perl.c b/perl.c
index 48ef5e0..fe69e8c 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -4453,7 +4453,6 @@ S_mayberelocate(pTHX_ const char *const dir, STRLEN len, U32 flags)
 #ifdef VMS
        char *unix;
-       STRLEN len;
        if ((unix = tounixspec_ts(SvPV(libdir,len),NULL)) != NULL) {
            len = strlen(unix);
@@ -4463,7 +4462,7 @@ S_mayberelocate(pTHX_ const char *const dir, STRLEN len, U32 flags)
                          "Failed to unixify @INC element \"%s\"\n",
-                         SvPV(libdir,len));
+                         SvPV_nolen_const(libdir));