diff --git a/SystemTools.cxx b/SystemTools.cxx
index 2b16d93c40ef87669af649d53f29c2294b38b67c..2ae24656cf2564661a0afa892faccec4c8f2e64a 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -1318,9 +1318,6 @@ kwsys_stl::string SystemTools::CollapseFullPath(const char* in_relative)
 kwsys_stl::string SystemTools::CollapseFullPath(const char* in_relative,
                                             const char* in_base)
 {
-  kwsys_stl::string dir, file;
-  SystemTools::SplitProgramPath(in_relative, dir, file, false);
-  
   // Save original working directory.
   kwsys_stl::string orig = SystemTools::GetCurrentWorkingDirectory();
   
@@ -1330,6 +1327,9 @@ kwsys_stl::string SystemTools::CollapseFullPath(const char* in_relative,
     Chdir(in_base);
     }
   
+  kwsys_stl::string dir, file;
+  SystemTools::SplitProgramPath(in_relative, dir, file, false);
+  
 #ifdef _WIN32
   // Follow relative path.
   if(!(dir == ""))