diff options
author | Brad King <brad.king@kitware.com> | 2020-10-19 14:25:30 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-10-19 14:26:30 (GMT) |
commit | f4e6dfe55d27305a5896c65bb5be8010aa0ff3ec (patch) | |
tree | 1380e548b2dbabc623fa8b4ca37840151971139f | |
parent | ae1ca3034e7d54f95f242c67f044437987f8ce1d (diff) | |
parent | 747f80fe82b6045fca006ece601b2189bc547aac (diff) | |
download | CMake-f4e6dfe55d27305a5896c65bb5be8010aa0ff3ec.zip CMake-f4e6dfe55d27305a5896c65bb5be8010aa0ff3ec.tar.gz CMake-f4e6dfe55d27305a5896c65bb5be8010aa0ff3ec.tar.bz2 |
Merge topic 'separate_arguments-no-args' into release-3.19
747f80fe82 separate_arguments: Fix crash on *_COMMAND with no arguments
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5382
4 files changed, 20 insertions, 0 deletions
diff --git a/Source/cmSeparateArgumentsCommand.cxx b/Source/cmSeparateArgumentsCommand.cxx index 7e501a2..52b1a44 100644 --- a/Source/cmSeparateArgumentsCommand.cxx +++ b/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()) { diff --git a/Tests/RunCMake/separate_arguments/NativeCommand.cmake b/Tests/RunCMake/separate_arguments/NativeCommand.cmake index 1cb009e..0051a79 100644 --- a/Tests/RunCMake/separate_arguments/NativeCommand.cmake +++ b/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() diff --git a/Tests/RunCMake/separate_arguments/UnixCommand.cmake b/Tests/RunCMake/separate_arguments/UnixCommand.cmake index 0b5767a..c56cd63 100644 --- a/Tests/RunCMake/separate_arguments/UnixCommand.cmake +++ b/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() diff --git a/Tests/RunCMake/separate_arguments/WindowsCommand.cmake b/Tests/RunCMake/separate_arguments/WindowsCommand.cmake index 86aa14a..cd07494 100644 --- a/Tests/RunCMake/separate_arguments/WindowsCommand.cmake +++ b/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() |