diff --git a/ProcessUNIX.c b/ProcessUNIX.c
index c9f6315ef79d10e348df6c6c0a8273b90b849403..835173c3b7c42335fac7ce42713cee4839d7f837 100644
--- a/ProcessUNIX.c
+++ b/ProcessUNIX.c
@@ -1044,20 +1044,21 @@ static int kwsysProcessInitialize(kwsysProcess* cp)
   memset(cp->CommandExitCodes, 0, sizeof(int)*cp->NumberOfCommands);
 
   /* Allocate memory to save the real working directory.  */
-  {
+  if ( cp->WorkingDirectory )
+    {
 #if defined(MAXPATHLEN)
-  cp->RealWorkingDirectoryLength = MAXPATHLEN;
+    cp->RealWorkingDirectoryLength = MAXPATHLEN;
 #elif defined(PATH_MAX)
-  cp->RealWorkingDirectoryLength = PATH_MAX;
+    cp->RealWorkingDirectoryLength = PATH_MAX;
 #else
-  cp->RealWorkingDirectoryLength = 4096;
+    cp->RealWorkingDirectoryLength = 4096;
 #endif
-  cp->RealWorkingDirectory = malloc(cp->RealWorkingDirectoryLength);
-  if(!cp->RealWorkingDirectory)
-    {
-    return 0;
+    cp->RealWorkingDirectory = malloc(cp->RealWorkingDirectoryLength);
+    if(!cp->RealWorkingDirectory)
+      {
+      return 0;
+      }
     }
-  }
 
   return 1;
 }