Don't use invalid iterators in Doxygen command parsing code
Check that the string is non-empty before dereferencing its begin() iterator and avoid calling addDoxyCommand() with an empty string in the first place.
This commit is contained in:
parent
ac8de714af
commit
8cbeb084c4
1 changed files with 12 additions and 0 deletions
|
|
@ -1081,6 +1081,13 @@ bool DoxygenParser::addDoxyCommand(DoxygenParser::TokenList &tokList, const std:
|
|||
tokList.push_back(Token(COMMAND, cmd));
|
||||
return true;
|
||||
} else {
|
||||
if (cmd.empty()) {
|
||||
// This actually indicates a bug in the code in this file, as this
|
||||
// function shouldn't be called at all in this case.
|
||||
printListError(WARN_DOXYGEN_UNKNOWN_COMMAND, "Unexpected empty Doxygen command.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// This function is called for the special Doxygen commands, but also for
|
||||
// HTML commands (or anything that looks like them, actually) and entities.
|
||||
// We don't recognize all of those, so just ignore them and pass them
|
||||
|
|
@ -1181,6 +1188,11 @@ void DoxygenParser::processWordCommands(size_t &pos, const std::string &line) {
|
|||
size_t endOfWordPos = getEndOfWordCommand(line, pos);
|
||||
|
||||
string cmd = line.substr(pos, endOfWordPos - pos);
|
||||
if (cmd.empty()) {
|
||||
// This was a bare backslash, just ignore it.
|
||||
return;
|
||||
}
|
||||
|
||||
addDoxyCommand(m_tokenList, cmd);
|
||||
|
||||
// A flag for whether we want to skip leading spaces after the command
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue