diff --git a/lib/token.cpp b/lib/token.cpp index 42097422e..cda6b018f 100644 --- a/lib/token.cpp +++ b/lib/token.cpp @@ -224,13 +224,39 @@ Token *Token::tokAt(int index) const Token *Token::linkAt(int index) const { const Token *tok = this->tokAt(index); - return tok->link(); + if (!tok) { + std::list locationList; + ErrorLogger::ErrorMessage::FileLocation loc; + loc.setfile(""); + loc.line = this->linenr(); + locationList.push_back(loc); + const ErrorLogger::ErrorMessage errmsg(locationList, + Severity::error, + "Internal error. Token::linkAt called with index outside the tokens range.", + "cppcheckError", + false); + Check::reportError(errmsg); + } + return tok ? tok->link() : 0; } Token *Token::linkAt(int index) { Token *tok = this->tokAt(index); - return tok->link(); + if (!tok) { + std::list locationList; + ErrorLogger::ErrorMessage::FileLocation loc; + loc.setfile(""); + loc.line = this->linenr(); + locationList.push_back(loc); + const ErrorLogger::ErrorMessage errmsg(locationList, + Severity::error, + "Internal error. Token::linkAt called with index outside the tokens range.", + "cppcheckError", + false); + Check::reportError(errmsg); + } + return tok ? tok->link() : 0; } const std::string &Token::strAt(int index) const