summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2012-04-25 18:03:53 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2012-04-25 18:03:53 (GMT)
commitc4aa5386fb69822e1b131fb95cc11682ed1f5219 (patch)
treeb456ddd1d5dfce609a4d73edc2e129524e67164e /Source
parentf45d004c0a052646494085b687af6aa1d539c876 (diff)
parent05604eb9cb7ced290af67dcc392f0a9a10e64386 (diff)
downloadCMake-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.cxx15
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;