Hi Helmut, On Wed, Aug 31, 2016 at 11:52:56AM +0200, Helmut Grohne wrote: > > I'm not sure that making every Doxygen bug that makes it crash or > produce invalid output release critical is useful. If pursuing that > road, one can easily generate a stream of such bugs that makes it > permanently rc-buggy (e.g. try afl) and we should simply release without > it. Would that be a better outcome? If not, we shouldn't file them at > rc severity and have the consumers (that must know about Doxygen's > fragility) paper over its bugs. I see that this sounds backwards, but if > you don't want breakage, it's probably better to move to sphinx.
While admitting that I'm not an doxygen expert and do not really know about its fragility (so far the packages I maintained were not broken by doxygen changes) I tend to disagree here. As far as I can see a bug that breaks the build of another package is RC - otherwise all those packages that are broken remain RC buggy and can not be released which is also the wrong outcome. > Looks like you are patching the wrong function (or maybe too few > functions). Can you try whether adding the same escape to > latexEscapePDFString instead of filterLatexString solves your problem? I can confirm that you are right according to this issue and the attached patch helps fixing the said problem. Unfortunately I was running into a different problem. I checked the LaTeX output and found that the following diff will enable building the PDF properly: # diff -u structcimg__library_1_1CImg.tex.orig structcimg__library_1_1CImg.tex --- structcimg__library_1_1CImg.tex.orig 2016-08-31 11:36:13.944519203 +0000 +++ structcimg__library_1_1CImg.tex 2016-08-31 11:34:51.259233203 +0000 @@ -15264,7 +15264,7 @@ \begin{DoxyParams}{Parameters} {\em filename} & Filename, as a C-\/string. \\ \hline -{\em colorspace} & Colorspace data field in output file (see \href{http://www.greyc.ensicaen.fr/~regis/Pandore/#documentation}{\tt Pandore file specifications} for more information). \\ +{\em colorspace} & Colorspace data field in output file (see \href{http://www.greyc.ensicaen.fr/~regis/Pandore/\#documentation}{\tt Pandore file specifications} for more information). \\ \hline \end{DoxyParams} \index{cimg\+\_\+library\+::\+C\+Img@{cimg\+\_\+library\+::\+C\+Img}!save\+\_\+pandore@{save\+\_\+pandore}} So it seems that also '#' needs to be escaped in *some* circumstances but surely not in all. I hesitate to simply add the '#' to the characters to be escaped in the attached patch since I'm not convenient with the doxygen code thus leaving it for your inspection. Hope this helps Andreas. -- http://fam-tille.de
Author: Andreas Tille <ti...@debian.org> Last-Update: Wed, 31 Aug 2016 08:41:10 +0200 Origin: https://github.com/doxygen/doxygen/commit/d4ab02c2da7df472bebbf2724419ba00f2de229c Description: Fix unescaped % and & sign breaking (at least) build of cimg (see #819606) --- a/src/util.cpp +++ b/src/util.cpp @@ -6550,6 +6550,8 @@ void filterLatexString(FTextStream &t,co case '{': t << "\\{"; break; case '}': t << "\\}"; break; case '_': t << "\\_"; break; + case '%': t << "\\%"; break; + case '&': t << "\\&"; break; case ' ': if (keepSpaces) t << "~"; else t << ' '; break; default: @@ -6730,6 +6732,8 @@ QCString latexEscapePDFString(const char case '\\': t << "\\textbackslash{}"; break; case '{': t << "\\{"; break; case '}': t << "\\}"; break; + case '%': t << "\\%"; break; + case '&': t << "\\&"; break; default: t << c; break;