Fix declaration after statement in vms.c's Perl_my_chdir
authorCraig A. Berry <craigberry@mac.com>
Sat, 2 Mar 2013 23:55:13 +0000 (17:55 -0600)
committerCraig A. Berry <craigberry@mac.com>
Sun, 3 Mar 2013 00:02:37 +0000 (18:02 -0600)
And while we're there, set errno appropriately for the empty string
input case.

vms/vms.c

index 82b5d16..58de70d 100644 (file)
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -2102,16 +2102,18 @@ int
 Perl_my_chdir(pTHX_ const char *dir)
 {
   STRLEN dirlen = strlen(dir);
+  const char *dir1 = dir;
 
   /* zero length string sometimes gives ACCVIO */
-  if (dirlen == 0) return -1;
-  const char *dir1;
+  if (dirlen == 0) {
+    SETERRNO(EINVAL, SS$_BADPARAM);
+    return -1;
+  }
 
   /* Perl is passing the output of the DCL SHOW DEFAULT with leading spaces.
    * This does not work if DECC$EFS_CHARSET is active.  Hack it here
    * so that existing scripts do not need to be changed.
    */
-  dir1 = dir;
   while ((dirlen > 0) && (*dir1 == ' ')) {
     dir1++;
     dirlen--;