From a08154d493a08f1fc1473038f897eb5468a8f79b Mon Sep 17 00:00:00 2001
From: Daniel Chabrowski <dantezstudio@gmail.com>
Date: Sun, 1 Jul 2018 18:30:21 +0200
Subject: list: Allow inserting at the end of a list

Fixes: #18069
---
 Source/cmListCommand.cxx                           | 6 ++----
 Tests/CMakeTests/ListTest.cmake.in                 | 4 ++++
 Tests/RunCMake/list/INSERT-InvalidIndex-stderr.txt | 2 +-
 Tests/RunCMake/list/INSERT-InvalidIndex.cmake      | 2 +-
 4 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx
index ba0c843..d7de2fa 100644
--- a/Source/cmListCommand.cxx
+++ b/Source/cmListCommand.cxx
@@ -289,12 +289,10 @@ bool cmListCommand::HandleInsertCommand(std::vector<std::string> const& args)
     if (item < 0) {
       item = static_cast<int>(nitem) + item;
     }
-    if (item < 0 || nitem <= static_cast<size_t>(item)) {
+    if (item < 0 || nitem < static_cast<size_t>(item)) {
       std::ostringstream str;
       str << "index: " << item << " out of range (-" << varArgsExpanded.size()
-          << ", "
-          << (varArgsExpanded.empty() ? 0 : (varArgsExpanded.size() - 1))
-          << ")";
+          << ", " << varArgsExpanded.size() << ")";
       this->SetError(str.str());
       return false;
     }
diff --git a/Tests/CMakeTests/ListTest.cmake.in b/Tests/CMakeTests/ListTest.cmake.in
index 76f5e4f..f517e64 100644
--- a/Tests/CMakeTests/ListTest.cmake.in
+++ b/Tests/CMakeTests/ListTest.cmake.in
@@ -53,6 +53,10 @@ set(result andy brad)
 list(INSERT result -1 bill ken)
 TEST("INSERT result -1 bill ken" "andy;bill;ken;brad")
 
+set(result andy brad)
+list(INSERT result 2 bill ken)
+TEST("INSERT result 2 bill ken" "andy;brad;bill;ken")
+
 set(result andy bill brad ken bob)
 list(REMOVE_ITEM result bob)
 TEST("REMOVE_ITEM result bob" "andy;bill;brad;ken")
diff --git a/Tests/RunCMake/list/INSERT-InvalidIndex-stderr.txt b/Tests/RunCMake/list/INSERT-InvalidIndex-stderr.txt
index 6e15c0b..9b9c5e0 100644
--- a/Tests/RunCMake/list/INSERT-InvalidIndex-stderr.txt
+++ b/Tests/RunCMake/list/INSERT-InvalidIndex-stderr.txt
@@ -1,4 +1,4 @@
 ^CMake Error at INSERT-InvalidIndex.cmake:2 \(list\):
-  list index: 3 out of range \(-3, 2\)
+  list index: 4 out of range \(-3, 3\)
 Call Stack \(most recent call first\):
   CMakeLists.txt:3 \(include\)$
diff --git a/Tests/RunCMake/list/INSERT-InvalidIndex.cmake b/Tests/RunCMake/list/INSERT-InvalidIndex.cmake
index 4103d97..12ac114 100644
--- a/Tests/RunCMake/list/INSERT-InvalidIndex.cmake
+++ b/Tests/RunCMake/list/INSERT-InvalidIndex.cmake
@@ -1,2 +1,2 @@
 set(mylist alpha bravo charlie)
-list(INSERT mylist 3 delta)
+list(INSERT mylist 4 delta)
-- 
cgit v0.12