From dfa24355eacbf99cf98bbf4027b8188c13ac7154 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Tue, 14 May 2019 12:23:41 -0400 Subject: cmUVProcessChain: Add assert() for static analysis tools Some static analysis tools throw a false positive for an out-of-bounds item that is being dereferenced. This out-of-bounds error will never actually happen because of how cmUVProcessChain::InternalData::AddCommand() is being called. Nevertheless, this change adds an assert() to help static analysis tools be absolutely certain that the referenced item is within the vector's bounds. This change also changes the item access to use an index rather than an iterator. --- Source/cmUVProcessChain.cxx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/cmUVProcessChain.cxx b/Source/cmUVProcessChain.cxx index c4e30d4..90ece0b 100644 --- a/Source/cmUVProcessChain.cxx +++ b/Source/cmUVProcessChain.cxx @@ -8,6 +8,8 @@ #include "cmUVStreambuf.h" #include "cm_uv.h" +#include + #include #include #include @@ -250,7 +252,8 @@ bool cmUVProcessChain::InternalData::AddCommand( if (first) { stdio[0].flags = UV_IGNORE; } else { - auto& prev = **std::prev(this->Processes.end(), 2); + assert(this->Processes.size() >= 2); + auto& prev = *this->Processes[this->Processes.size() - 2]; stdio[0].flags = UV_INHERIT_STREAM; stdio[0].data.stream = prev.OutputPipe; } -- cgit v0.12