From 822abf1265eacdffee37d3ed55e41425b6602e27 Mon Sep 17 00:00:00 2001 From: Alex Turbov Date: Sun, 30 Jun 2019 12:23:35 +0300 Subject: list(POP_FRONT): Fix always assigning first item to output vars Fixes: #19436 --- Source/cmListCommand.cxx | 2 +- Tests/RunCMake/list/POP_FRONT.cmake | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index 5474afa..1b01ea2 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -344,7 +344,7 @@ bool cmListCommand::HandlePopFrontCommand(std::vector const& args) auto vi = varArgsExpanded.begin(); for (; vi != varArgsExpanded.end() && ai != args.cend(); ++ai, ++vi) { assert(!ai->empty()); - this->Makefile->AddDefinition(*ai, varArgsExpanded.front().c_str()); + this->Makefile->AddDefinition(*ai, vi->c_str()); } varArgsExpanded.erase(varArgsExpanded.begin(), vi); // Undefine the rest variables if the list gets empty earlier... diff --git a/Tests/RunCMake/list/POP_FRONT.cmake b/Tests/RunCMake/list/POP_FRONT.cmake index a2f8f3c..70f757a 100644 --- a/Tests/RunCMake/list/POP_FRONT.cmake +++ b/Tests/RunCMake/list/POP_FRONT.cmake @@ -77,3 +77,16 @@ endif() if(NOT test STREQUAL "two") message(FATAL_ERROR "`test` has unexpected value `${test}`") endif() + +# BUG 19436 +set(myList a b c) +list(POP_FRONT myList first second) +if(NOT first STREQUAL "a") + message(FATAL_ERROR "BUG#19436: `first` has unexpected value `${first}`") +endif() +if(NOT second STREQUAL "b") + message(FATAL_ERROR "BUG#19436: `second` has unexpected value `${second}`") +endif() +if(NOT myList STREQUAL "c") + message(FATAL_ERROR "BUG#19436: `myList` has unexpected value `${myList}`") +endif() -- cgit v0.12