summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2018-12-18 21:12:14 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2018-12-18 21:12:14 (GMT)
commit449a7e2b4ff114a72be573013558bae19672ebbc (patch)
tree56aec4c15578b6868ea48dcc8729a592465ce4a0 /src
parent43e67dce8c164df469e725deb94db582d9cfc69b (diff)
downloadDoxygen-449a7e2b4ff114a72be573013558bae19672ebbc.zip
Doxygen-449a7e2b4ff114a72be573013558bae19672ebbc.tar.gz
Doxygen-449a7e2b4ff114a72be573013558bae19672ebbc.tar.bz2
Redundant whitespace removal breaks some C++ links [with test case and Git bisect] (Origin: bugzilla #791942)
Diffstat (limited to 'src')
-rw-r--r--src/util.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/util.cpp b/src/util.cpp
index a1f40af..1b6afa2 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1895,11 +1895,18 @@ QCString removeRedundantWhiteSpace(const QCString &s)
if (g_charAroundSpace.charMap[(uchar)pc].before &&
g_charAroundSpace.charMap[(uchar)nc].after &&
!(pc==',' && nc=='.') &&
- (osp<8 || (osp>=8 && isId(nc))) // e.g. "operator >>" -> "operator>>", but not "operator int" -> operatorint"
+ (osp<8 || (osp>=8 && pc!='"' && isId(nc)) || (osp>=8 && pc!='"' && nc!='"'))
+ // e.g. 'operator >>' -> 'operator>>',
+ // 'operator "" _x' -> 'operator""_x',
+ // but not 'operator int' -> 'operatorint'
)
{ // keep space
*dst++=' ';
}
+ else if ((pc=='*' || pc=='&' || pc=='.') && nc=='>')
+ {
+ *dst++=' ';
+ }
}
break;
default: