Browse Source

file: Fix crash on GLOB with no expressions after LIST_DIRECTORIES

Since commit v3.3.0-rc1~318^2~1 (file: Teach GLOB to list directories
optionally, 2015-03-17) using `LIST_DIRECTORIES` followed by no
expression causes a crash.  Fix the logic to avoid the crash.

Fixes: #16565
Brad King 8 years ago
parent
commit
2bba0bfc2c

+ 1 - 1
Source/cmFileCommand.cxx

@@ -788,7 +788,7 @@ bool cmFileCommand::HandleGlobCommand(std::vector<std::string> const& args,
         this->SetError("LIST_DIRECTORIES missing bool value.");
         return false;
       }
-      ++i;
+      continue;
     }
 
     if (recurse && (*i == "FOLLOW_SYMLINKS")) {

+ 1 - 0
Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES.cmake

@@ -0,0 +1 @@
+file(GLOB CONTENT_LIST LIST_DIRECTORIES false)

+ 1 - 0
Tests/RunCMake/file/RunCMakeTest.cmake

@@ -31,6 +31,7 @@ run_cmake(GLOB_RECURSE)
 run_cmake(GLOB-error-LIST_DIRECTORIES-not-boolean)
 # test is valid both for GLOB and GLOB_RECURSE
 run_cmake(GLOB-error-LIST_DIRECTORIES-no-arg)
+run_cmake(GLOB-noexp-LIST_DIRECTORIES)
 
 if(NOT WIN32 OR CYGWIN)
   run_cmake(GLOB_RECURSE-cyclic-recursion)