From: Aaron Ballman Date: Thu, 12 Mar 2015 13:49:45 +0000 (+0000) Subject: Instead of dereferencing std::vector::end() (which is UB and causes failed assertions... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c57c7cf62394d7ceb8f576b411419f5f566eac05;p=clang Instead of dereferencing std::vector::end() (which is UB and causes failed assertions in debug builds with Visual Studio), use data() + size() to calculate the end iterator. Amends r231952. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232037 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/MicrosoftCXXABI.cpp b/lib/CodeGen/MicrosoftCXXABI.cpp index 1ec37f4131..3bc9f64fe4 100644 --- a/lib/CodeGen/MicrosoftCXXABI.cpp +++ b/lib/CodeGen/MicrosoftCXXABI.cpp @@ -3296,7 +3296,8 @@ MicrosoftCXXABI::getAddrOfCXXCopyCtorClosure(const CXXConstructorDecl *CD) { CodeGenFunction::RunCleanupsScope Cleanups(CGF); const auto *FPT = CD->getType()->castAs(); - ConstExprIterator ArgBegin(ArgVec.data()), ArgEnd(&*ArgVec.end()); + ConstExprIterator ArgBegin(ArgVec.data()), + ArgEnd(ArgVec.data() + ArgVec.size()); CGF.EmitCallArgs(Args, FPT, ArgBegin, ArgEnd, CD, 1); // Insert any ABI-specific implicit constructor arguments.