diff --git a/SystemTools.cxx b/SystemTools.cxx
index 430e582afe6789bb610a4ddda252c84834ee5a49..2eff35fcf7a35c67a0586dfca7ff7ee550b16ee9 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -4335,9 +4335,9 @@ kwsys_stl::string SystemTools::GetParentDirectory(const char* fileOrDir)
   return SystemTools::GetFilenamePath(fileOrDir);
 }
 
-bool SystemTools::IsSubDirectory(const char* cSubdir, const char* cDir)
+bool SystemTools::IsSubDirectory(const kwsys_stl::string& cSubdir, const kwsys_stl::string& cDir)
 {
-  if(!*cDir)
+  if(cDir.empty())
     {
     return false;
     }
diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in
index 4784e27a58f284a604d6aff5ff477702811c3e64..c0f3d30629ba6fa952f30f0c07d197e0ea7608d5 100644
--- a/SystemTools.hxx.in
+++ b/SystemTools.hxx.in
@@ -487,7 +487,7 @@ public:
   /**
    * Check if the given file or directory is in subdirectory of dir
    */
-  static bool IsSubDirectory(const char* fileOrDir, const char* dir);
+  static bool IsSubDirectory(const kwsys_stl::string& fileOrDir, const kwsys_stl::string& dir);
 
   /** -----------------------------------------------------------------
    *               File Manipulation Routines