diff --git a/Examples/test-suite/doxygen_misc_constructs.h b/Examples/test-suite/doxygen_misc_constructs.h index d25b5af15..edbea3ed5 100644 --- a/Examples/test-suite/doxygen_misc_constructs.h +++ b/Examples/test-suite/doxygen_misc_constructs.h @@ -64,4 +64,11 @@ void backslashB() void backslashC() {} - +/** + * The next line contains expression: + *
+ * ['retVal < 10', 'g_counter == 23 && g_mode & 3']
+ *
+ */ +void cycle() +{} diff --git a/Examples/test-suite/java/doxygen_misc_constructs_runme.java b/Examples/test-suite/java/doxygen_misc_constructs_runme.java index ae9cc442f..b14918a64 100644 --- a/Examples/test-suite/java/doxygen_misc_constructs_runme.java +++ b/Examples/test-suite/java/doxygen_misc_constructs_runme.java @@ -153,7 +153,16 @@ public class doxygen_misc_constructs_runme { " with old comment parser.\n" + " @see MyClass#fun(char,float)\n" + ""); - + + wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.cycle()", + " The next line contains expression:\n" + + "
\n" +
+    		" ['retVal < 10', 'g_counter == 23 && g_mode & 3']\n" +
+                " 
\n" + + "\n" + + ""); + + // and ask the parser to check comments for us System.exit(parser.check(wantedComments)); } diff --git a/Source/DoxygenTranslator/src/DoxygenParser.cpp b/Source/DoxygenTranslator/src/DoxygenParser.cpp index 9c07eb4cf..d270631df 100644 --- a/Source/DoxygenTranslator/src/DoxygenParser.cpp +++ b/Source/DoxygenTranslator/src/DoxygenParser.cpp @@ -1120,7 +1120,7 @@ void DoxygenParser::processHtmlTags(size_t &pos, const std::string &line) pos = endHtmlPos; // prepend '<' to distinguish HTML tags from doxygen commands - if (addDoxyCommand(m_tokenList, '<' + cmd)) { + if (!cmd.empty() && addDoxyCommand(m_tokenList, '<' + cmd)) { // it is a valid HTML command if (line[pos] != '>') { // it should be HTML tag with args, // for example , , ... @@ -1148,7 +1148,10 @@ void DoxygenParser::processHtmlTags(size_t &pos, const std::string &line) m_tokenList.push_back(Token(PLAINSTRING, "")); } } - pos++; // skip '>' + + if (pos != string::npos) { + pos++; // skip '>' + } } else { // the command is not HTML supported by Doxygen, < and > will be // replaced by HTML entities < and > respectively, @@ -1164,7 +1167,7 @@ void DoxygenParser::processHtmlEntities(size_t &pos, const std::string &line) if (endOfWordPos != string::npos) { - if (line[endOfWordPos] == ';') + if (line[endOfWordPos] == ';' && (endOfWordPos - pos) > 1) { // if entity is not recognized by Doxygen (not in the list of // commands) nothing is added (here and in Doxygen).