Browse Source

Merge topic 'separate_arguments-no-args' into release-3.19

747f80fe82 separate_arguments: Fix crash on *_COMMAND with no arguments

Acked-by: Kitware Robot <[email protected]>
Merge-request: !5382
Brad King 5 years ago
parent
commit
f4e6dfe55d

+ 5 - 0
Source/cmSeparateArgumentsCommand.cxx

@@ -80,6 +80,11 @@ bool cmSeparateArgumentsCommand(std::vector<std::string> const& args,
     return false;
   }
 
+  if (unparsedArguments.empty()) {
+    status.GetMakefile().AddDefinition(var, {});
+    return true;
+  }
+
   std::string& command = unparsedArguments.front();
 
   if (command.empty()) {

+ 5 - 0
Tests/RunCMake/separate_arguments/NativeCommand.cmake

@@ -17,3 +17,8 @@ if(NOT "${native_out}" STREQUAL "${native_exp}")
   message(FATAL_ERROR "separate_arguments native-style failed.  "
     "Expected\n  [${native_exp}]\nbut got\n  [${native_out}]\n")
 endif()
+
+separate_arguments(empty_out NATIVE_COMMAND)
+if(NOT empty_out STREQUAL "")
+  message(FATAL_ERROR "separate_arguments native-style failed on no arguments")
+endif()

+ 5 - 0
Tests/RunCMake/separate_arguments/UnixCommand.cmake

@@ -6,3 +6,8 @@ if(NOT "${unix_out}" STREQUAL "${unix_exp}")
   message(FATAL_ERROR "separate_arguments unix-style failed.  "
     "Expected\n  [${unix_exp}]\nbut got\n  [${unix_out}]\n")
 endif()
+
+separate_arguments(empty_out UNIX_COMMAND)
+if(NOT empty_out STREQUAL "")
+  message(FATAL_ERROR "separate_arguments unix-style failed on no arguments")
+endif()

+ 5 - 0
Tests/RunCMake/separate_arguments/WindowsCommand.cmake

@@ -6,3 +6,8 @@ if(NOT "${windows_out}" STREQUAL "${windows_exp}")
   message(FATAL_ERROR "separate_arguments windows-style failed.  "
     "Expected\n  [${windows_exp}]\nbut got\n  [${windows_out}]\n")
 endif()
+
+separate_arguments(empty_out WINDOWS_COMMAND)
+if(NOT empty_out STREQUAL "")
+  message(FATAL_ERROR "separate_arguments windows-style failed on no arguments")
+endif()