Doxygen comment parsing fix for empty lines in code/verbatim blocks
Fix how end of paragraph is identified when parsing \code and \verbatim blocks that appear within a paragraph and contain an empty line. Previously this would generate a warning for unexpected end of doxygen comments, and it could generate a segfault due to dereferencing an invalid iterator value. The doxygen_basic_translate.i and doxygen_basic_translate_style2.i tests have been updated to serve as regression tests for this behavior. Prior to this fix, inclusion of the empty code block line in this context produced a segfault.
This commit is contained in:
parent
b55ce0cf84
commit
85a4c7ffc0
7 changed files with 24 additions and 0 deletions
|
|
@ -289,6 +289,18 @@ DoxygenParser::TokenListCIt DoxygenParser::getEndOfParagraph(const TokenList &to
|
|||
TokenListCIt endOfParagraph = m_tokenListIt;
|
||||
|
||||
while (endOfParagraph != tokList.end()) {
|
||||
// If \code or \verbatim is encountered within a paragraph, then
|
||||
// go all the way to the end of that command, since the content
|
||||
// could contain empty lines that would appear to be paragraph
|
||||
// ends:
|
||||
if (endOfParagraph->m_tokenType == COMMAND &&
|
||||
(endOfParagraph->m_tokenString == "code" ||
|
||||
endOfParagraph->m_tokenString == "verbatim")) {
|
||||
const string theCommand = endOfParagraph->m_tokenString;
|
||||
endOfParagraph = getEndCommand("end" + theCommand, tokList);
|
||||
endOfParagraph++; // Move after the end command
|
||||
return endOfParagraph;
|
||||
}
|
||||
if (endOfParagraph->m_tokenType == END_LINE) {
|
||||
endOfParagraph++;
|
||||
if (endOfParagraph != tokList.end()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue