From 99dea548e034524d49820a2c10b3b03adddc9ec3 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 2 Aug 2015 19:59:13 +0300 Subject: [PATCH] C++: Fix crash in template argument resolving Occurs in boost/phoenix.hpp Task-number: QTCREATORBUG-14748 Change-Id: If89b0db48346aac72e0d8aaa8d165b2bf43bd784 Reviewed-by: Nikolai Kosjar --- src/libs/3rdparty/cplusplus/Scope.cpp | 2 +- src/libs/cplusplus/LookupContext.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libs/3rdparty/cplusplus/Scope.cpp b/src/libs/3rdparty/cplusplus/Scope.cpp index 107df10dffd..f04e72e2a6d 100644 --- a/src/libs/3rdparty/cplusplus/Scope.cpp +++ b/src/libs/3rdparty/cplusplus/Scope.cpp @@ -214,7 +214,7 @@ unsigned SymbolTable::symbolCount() const Symbol *SymbolTable::symbolAt(unsigned index) const { - if (! _symbols) + if (! _symbols || index >= symbolCount()) return 0; return _symbols[index]; } diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index f9660ac26bb..b04d639961f 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -1971,8 +1971,9 @@ FullySpecifiedType CreateBindings::resolveTemplateArgument(Clone &cloner, { FullySpecifiedType ty; - const TypenameArgument *tParam - = specialization->templateParameterAt(index)->asTypenameArgument(); + const TypenameArgument *tParam = 0; + if (Symbol *tArgument = specialization->templateParameterAt(index)) + tParam = tArgument->asTypenameArgument(); if (!tParam) return ty;