Fix pydoc null pointer dereference with missing arg type

Processing doxygen @param comments for a parameter whose name did not
appear in the function declaration would cause a segfault due to a
null pointer dereference.

Adding test cases for both variadic function (no specified arguments)
and @param comment that references an argument that is not named in
the function prototype.  Both of these cases previously segfaulted.
This commit is contained in:
John McFarland 2019-10-27 18:19:42 -05:00
commit f99eb0058b
4 changed files with 35 additions and 5 deletions

View file

@ -107,6 +107,20 @@ double Atan2(double y, double x)
return 0;
}
/**
* @brief Test variadic function
* @param ... extra args
*/
void function8(...) {
}
/**
* @brief Test unnamed argument
* @param baz Description of baz
*/
void function9(int) {
}
/**
* Comment at the end of file should be ignored.
*/

View file

@ -94,6 +94,13 @@ public class doxygen_basic_translate_runme {
" @param x Horizontal coordinate.\n" +
" @return Arc tangent of <code>y/x</code>.\n" +
"");
wantedComments.put("doxygen_basic_translate.doxygen_basic_translate.function8()",
" Test variadic function\n" +
"");
wantedComments.put("doxygen_basic_translate.doxygen_basic_translate.function9(int)",
" Test unnamed argument\n" +
"");
// and ask the parser to check comments for us
System.exit(parser.check(wantedComments));

View file

@ -70,6 +70,16 @@ Test for a parameter with difficult type
:type a: :py:class:`Shape`
:param a: Very strange param"""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate.function8),
"""\
Test variadic function
:param ...: extra args"""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate.function9),
"""\
Test unnamed argument
:param baz: Description of baz"""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate.Atan2),
"""\