diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2015-08-02 19:59:13 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2015-08-03 09:31:45 +0000 |
commit | 99dea548e034524d49820a2c10b3b03adddc9ec3 (patch) | |
tree | 3f409c5247358f64c67a3b86438a6e496377cf3c | |
parent | fff0a27103af706d4d24e73fc0c31e5ccf4e3523 (diff) | |
download | qt-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.cpp | 2 | ||||
-rw-r--r-- | 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 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; |