summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2015-08-02 19:59:13 +0300
committerOrgad Shaneh <orgads@gmail.com>2015-08-03 09:31:45 +0000
commit99dea548e034524d49820a2c10b3b03adddc9ec3 (patch)
tree3f409c5247358f64c67a3b86438a6e496377cf3c
parentfff0a27103af706d4d24e73fc0c31e5ccf4e3523 (diff)
downloadqt-creator-99dea548e034524d49820a2c10b3b03adddc9ec3.tar.gz
C++: Fix crash in template argument resolving
Occurs in boost/phoenix.hpp Task-number: QTCREATORBUG-14748 Change-Id: If89b0db48346aac72e0d8aaa8d165b2bf43bd784 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
-rw-r--r--src/libs/3rdparty/cplusplus/Scope.cpp2
-rw-r--r--src/libs/cplusplus/LookupContext.cpp5
2 files changed, 4 insertions, 3 deletions
diff --git a/src/libs/3rdparty/cplusplus/Scope.cpp b/src/libs/3rdparty/cplusplus/Scope.cpp
index 107df10dff..f04e72e2a6 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 f9660ac26b..b04d639961 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;