diff options
author | David Cole <david.cole@kitware.com> | 2012-04-25 18:03:53 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2012-04-25 18:03:53 (GMT) |
commit | c4aa5386fb69822e1b131fb95cc11682ed1f5219 (patch) | |
tree | b456ddd1d5dfce609a4d73edc2e129524e67164e /Source | |
parent | f45d004c0a052646494085b687af6aa1d539c876 (diff) | |
parent | 05604eb9cb7ced290af67dcc392f0a9a10e64386 (diff) | |
download | CMake-c4aa5386fb69822e1b131fb95cc11682ed1f5219.zip CMake-c4aa5386fb69822e1b131fb95cc11682ed1f5219.tar.gz CMake-c4aa5386fb69822e1b131fb95cc11682ed1f5219.tar.bz2 |
Merge topic 'list-empty-error'
05604eb list: Handle errors on empty lists more gracefully (#13138)
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmListCommand.cxx | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index cbbcbb0..908f3b0 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -204,6 +204,12 @@ bool cmListCommand::HandleGetCommand(std::vector<std::string> const& args) this->Makefile->AddDefinition(variableName.c_str(), "NOTFOUND"); return true; } + // FIXME: Add policy to make non-existing lists an error like empty lists. + if(varArgsExpanded.empty()) + { + this->SetError("GET given empty list"); + return false; + } std::string value; size_t cc; @@ -318,7 +324,8 @@ bool cmListCommand::HandleInsertCommand(std::vector<std::string> const& args) // expand the variable int item = atoi(args[2].c_str()); std::vector<std::string> varArgsExpanded; - if ( !this->GetList(varArgsExpanded, listName.c_str()) && item != 0) + if((!this->GetList(varArgsExpanded, listName.c_str()) + || varArgsExpanded.empty()) && item != 0) { cmOStringStream str; str << "index: " << item << " out of range (0, 0)"; @@ -544,6 +551,12 @@ bool cmListCommand::HandleRemoveAtCommand( this->SetError("sub-command REMOVE_AT requires list to be present."); return false; } + // FIXME: Add policy to make non-existing lists an error like empty lists. + if(varArgsExpanded.empty()) + { + this->SetError("REMOVE_AT given empty list"); + return false; + } size_t cc; std::vector<size_t> removed; |