Hi Andreas, On Wed, Aug 31, 2016 at 09:32:58AM +0200, Andreas Tille wrote: > Severity: serious
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. > html/latex/structcimg__library_1_1CImg.tex:\subsubsection[{\texorpdfstring{operator\%=(const > t value)}{operator%=(const t value)}}]{\setlength{\rightskip}{0pt plus > 5cm}{\bf C\+Img}$<$T$>$\& operator\%= ( > html/latex/structcimg__library_1_1CImg.tex:\subsubsection[{\texorpdfstring{operator\%=(const > char $\ast$const expression)}{operator%=(const char *const > expression)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf C\+Img}$<$T$>$\& > operator\%= ( > html/latex/structcimg__library_1_1CImg.tex:\subsubsection[{\texorpdfstring{operator\%=(const > C\+Img$<$ t $>$ \&img)}{operator%=(const CImg< t > > &img)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf C\+Img}$<$T$>$\& > operator\%= ( > html/latex/structcimg__library_1_1CImg.tex:\subsubsection[{\texorpdfstring{operator\%(const > t value) const }{operator%(const t value) const > }}]{\setlength{\rightskip}{0pt plus 5cm}{\bf C\+Img}$<$ typename > cimg\+::superset$<$T,t$>$\+::type $>$ operator\% ( > html/latex/structcimg__library_1_1CImg.tex:\subsubsection[{\texorpdfstring{operator\%(const > char $\ast$const expression) const }{operator%(const char *const expression) > const }}]{\setlength{\rightskip}{0pt plus 5cm}{\bf C\+Img}$<$Tfloat$>$ > operator\% ( > html/latex/structcimg__library_1_1CImg.tex:\subsubsection[{\texorpdfstring{operator\%(const > C\+Img$<$ t $>$ \&img) const }{operator%(const CImg< t > &img) const > }}]{\setlength{\rightskip}{0pt plus 5cm}{\bf C\+Img}$<$ typename > cimg\+::superset$<$T,t$>$\+::type $>$ operator\% ( Look closely. The issue is in the second argument to \texorpdfstring. There only is a single place emitting that macro and it resides in src/latexgen.cpp. The second argument is escaped using latexEscapePDFString, which is defined in src/util.cpp. > --- 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: 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? Thanks in advance. Helmut