summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2021-03-01 23:14:53 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2021-03-01 23:14:53 +0000
commitbff805dae562bb64a0d6322808808c4c5a68eeb0 (patch)
treeb094964522bc3465312a306cea4c059b70e007e3
parente74876f1b828b6c883ef9f6a6088eed8651cf840 (diff)
parent69f9509c2bb973071a97af3cb21fda2866848cd0 (diff)
downloadswig-bff805dae562bb64a0d6322808808c4c5a68eeb0.tar.gz
Merge branch 'ignore-empty-doxygen-commands'
* ignore-empty-doxygen-commands: Fix incorrect warning "Unknown Doxygen command: ." Don't use invalid iterators in Doxygen command parsing code Conflicts: CHANGES.current
-rw-r--r--CHANGES.current3
-rw-r--r--Examples/test-suite/doxygen_parsing.i1
-rw-r--r--Examples/test-suite/java/doxygen_parsing_runme.java6
-rw-r--r--Source/Doxygen/doxyparser.cxx12
4 files changed, 22 insertions, 0 deletions
diff --git a/CHANGES.current b/CHANGES.current
index c5400b381..cf0fcd142 100644
--- a/CHANGES.current
+++ b/CHANGES.current
@@ -7,6 +7,9 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
Version 4.1.0 (in progress)
===========================
+2021-03-01: vadz
+ #1952 Fix incorrect warning "Unknown Doxygen command: ."
+
2021-02-28: p2k
#969 [Javascript] v8/node - prevent crash calling a constructor without new keyword.
diff --git a/Examples/test-suite/doxygen_parsing.i b/Examples/test-suite/doxygen_parsing.i
index 40f37a4c2..3a559053d 100644
--- a/Examples/test-suite/doxygen_parsing.i
+++ b/Examples/test-suite/doxygen_parsing.i
@@ -29,6 +29,7 @@ enum SomeEnum
*/
struct SomeStruct
{
+ int width; ///< \**immutable** image width in pixels
};
/**
diff --git a/Examples/test-suite/java/doxygen_parsing_runme.java b/Examples/test-suite/java/doxygen_parsing_runme.java
index 10d65fca8..29e524f78 100644
--- a/Examples/test-suite/java/doxygen_parsing_runme.java
+++ b/Examples/test-suite/java/doxygen_parsing_runme.java
@@ -45,6 +45,12 @@ public class doxygen_parsing_runme {
" The struct comment \n" +
" \n" +
"");
+ wantedComments.put("doxygen_parsing.SomeStruct.setWidth(int)",
+ "**immutable** image width in pixels \n" +
+ "");
+ wantedComments.put("doxygen_parsing.SomeStruct.getWidth()",
+ "**immutable** image width in pixels \n" +
+ "");
wantedComments.put("doxygen_parsing.doxygen_parsing.setSomeVar(int)",
" The var comment \n" +
" \n" +
diff --git a/Source/Doxygen/doxyparser.cxx b/Source/Doxygen/doxyparser.cxx
index 35d18363f..d5a0a15eb 100644
--- a/Source/Doxygen/doxyparser.cxx
+++ b/Source/Doxygen/doxyparser.cxx
@@ -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