@@ -198,8 +198,8 @@ ATTRIB {ATTRNAME}{WS}*("="{WS}*(("\""[^\"]*"\"")|("'"[^\']*"'")|[^ \t\r\n'"><
198198URLCHAR [a-z_A-Z0-9 \!\~\,\:\;\' \$ \? \@\&\%\#\.\-\+\/\= \x80 -\xFF ]
199199URLMASK ({URLCHAR}+([({]{URLCHAR}*[)}])?)+
200200URLPROTOCOL ("http:"|"https:"|"ftp:"|"ftps:"|"sftp:"|"file:"|"news:"|"irc:"|"ircs:")
201- FILEICHAR [a-z_A-Z0-9\x80 -\xFF\\ :\\ \/\-\+ =&#@]
202- FILEECHAR [a-z_A-Z0-9\x80 -\xFF \-\+ =&#@]
201+ FILEICHAR [a-z_A-Z0-9\x80 -\xFF\\ :\\ \/\-\+ =&#@~ ]
202+ FILEECHAR [a-z_A-Z0-9\x80 -\xFF \-\+ =&#@~ ]
203203FILECHARS {FILEICHAR}*{FILEECHAR}+
204204HFILEMASK {FILEICHAR}*("."{FILEICHAR}+)+{FILECHARS}*
205205VFILEMASK {FILECHARS}("."{FILECHARS})*
@@ -260,8 +260,8 @@ REFWORD2_NOCV {REFWORD2_PRE}("("{FUNCPART}")")?
260260REFWORD3 ({ID}" :" )*{ID}" :" ?
261261REFWORD4_NOCV (({SCOPEPRE}*" operator" {OPMASKOP2})|((" ::" |" #" ){SCOPEPRE}*" operator" {OPMASKOP2}))
262262REFWORD4 {REFWORD4_NOCV}{CVSPEC}?
263- REFWORD {FILEMASK}|{ LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4}
264- REFWORD_NOCV {FILEMASK}|{ LABELID}|{REFWORD2_NOCV}|{REFWORD3}|{REFWORD4_NOCV}
263+ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4}
264+ REFWORD_NOCV {LABELID}|{REFWORD2_NOCV}|{REFWORD3}|{REFWORD4_NOCV}
265265RCSID " $" (" Author" |" Date" |" Header" |" Id" |" Locker" |" Log" |" Name" |" RCSfile" |" Revision" |" Source" |" State" )" :" [^:\n$][^\n$]*" $"
266266LINENR {BLANK}*([1 -9 ][0 -9 ]*|" 0" |" -1" )
267267
@@ -897,19 +897,31 @@ SHOWDATE ([0-9]{4}"-"[0-9]{1,2}"-"[0-9]{1,2})?({WS}*[0-9]{1,2}":"[0-9]{1,2}(":"[
897897 return Token::make_RetVal_OK ();
898898 }
899899<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANK}+/{ID}" =" { // case 2: plain file name specified followed by an attribute
900- yyextra->token .sectionId = QCString (yytext).stripWhiteSpace ();
900+ QCString tmp = yytext;
901+ tmp = tmp.stripWhiteSpace ();
902+ if (tmp[0 ] == ' ~' ) REJECT;
903+ yyextra->token .sectionId = tmp;
901904 return Token::make_RetVal_OK ();
902905 }
903906<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANK}+/" \" " { // case 3: plain file name specified followed by a quoted title
904- yyextra->token .sectionId = QCString (yytext).stripWhiteSpace ();
907+ QCString tmp = yytext;
908+ tmp = tmp.stripWhiteSpace ();
909+ if (tmp[0 ] == ' ~' ) REJECT;
910+ yyextra->token .sectionId = tmp;
905911 return Token::make_RetVal_OK ();
906912 }
907913<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANKopt}/\n { // case 4: plain file name specified without title or attributes
908- yyextra->token .sectionId = QCString (yytext).stripWhiteSpace ();
914+ QCString tmp = yytext;
915+ tmp = tmp.stripWhiteSpace ();
916+ if (tmp[0 ] == ' ~' ) REJECT;
917+ yyextra->token .sectionId = tmp;
909918 return Token::make_RetVal_OK ();
910919 }
911920<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANKopt}/" \\ ilinebr" { // case 5: plain file name specified without title or attributes
912- yyextra->token .sectionId = QCString (yytext).stripWhiteSpace ();
921+ QCString tmp = yytext;
922+ tmp = tmp.stripWhiteSpace ();
923+ if (tmp[0 ] == ' ~' ) REJECT;
924+ yyextra->token .sectionId = tmp;
913925 return Token::make_RetVal_OK ();
914926 }
915927<St_PlantUMLOpt>" \\ ilinebr" |
@@ -1090,14 +1102,29 @@ SHOWDATE ([0-9]{4}"-"[0-9]{1,2}"-"[0-9]{1,2})?({WS}*[0-9]{1,2}":"[0-9]{1,2}(":"[
10901102 unput (*yytext);
10911103 return Token::make_TK_NONE ();
10921104 }
1105+ <St_Ref>{FILEMASK}/{BLANK}(" const" )[a-z_A-Z0-9 ] { // see bug776988
1106+ if (yytext[0 ] == ' ~' ) REJECT;
1107+ yyextra->token .name =yytext;
1108+ return Token::make_TK_WORD ();
1109+ }
10931110<St_Ref>{REFWORD_NOCV}/{BLANK}(" const" )[a-z_A-Z0-9 ] { // see bug776988
10941111 yyextra->token .name =yytext;
10951112 return Token::make_TK_WORD ();
10961113 }
1114+ <St_Ref>{FILEMASK}/{BLANK}(" volatile" )[a-z_A-Z0-9 ] { // see bug776988
1115+ if (yytext[0 ] == ' ~' ) REJECT;
1116+ yyextra->token .name =yytext;
1117+ return Token::make_TK_WORD ();
1118+ }
10971119<St_Ref>{REFWORD_NOCV}/{BLANK}(" volatile" )[a-z_A-Z0-9 ] { // see bug776988
10981120 yyextra->token .name =yytext;
10991121 return Token::make_TK_WORD ();
11001122 }
1123+ <St_Ref>{FILEMASK} { // label to refer to
1124+ if (yytext[0 ] == ' ~' ) REJECT;
1125+ yyextra->token .name =yytext;
1126+ return Token::make_TK_WORD ();
1127+ }
11011128<St_Ref>{REFWORD} { // label to refer to
11021129 yyextra->token .name =yytext;
11031130 return Token::make_TK_WORD ();
@@ -1129,7 +1156,14 @@ SHOWDATE ([0-9]{4}"-"[0-9]{1,2}"-"[0-9]{1,2})?({WS}*[0-9]{1,2}":"[0-9]{1,2}(":"[
11291156<St_IntRef>{BLANK}+" \" " {
11301157 BEGIN (St_Ref2);
11311158 }
1132- <St_SetScope>({SCOPEMASK}|{ANONNS}){BLANK}|{FILEMASK} {
1159+ <St_SetScope>{FILEMASK} {
1160+ QCString tmp = yytext;
1161+ tmp = tmp.stripWhiteSpace ();
1162+ if (tmp[0 ] == ' ~' ) REJECT;
1163+ yyextra->token .name = tmp;
1164+ return Token::make_TK_WORD ();
1165+ }
1166+ <St_SetScope>({SCOPEMASK}|{ANONNS}){BLANK} {
11331167 yyextra->token .name = yytext;
11341168 yyextra->token .name = yyextra->token .name .stripWhiteSpace ();
11351169 return Token::make_TK_WORD ();
@@ -1319,7 +1353,10 @@ SHOWDATE ([0-9]{4}"-"[0-9]{1,2}"-"[0-9]{1,2})?({WS}*[0-9]{1,2}":"[0-9]{1,2}(":"[
13191353 return Token::make_TK_NONE ();
13201354 }
13211355<St_IFile>{BLANK}*{FILEMASK} {
1322- yyextra->fileName = QCString (yytext).stripWhiteSpace ();
1356+ QCString tmp = yytext;
1357+ tmp = tmp.stripWhiteSpace ();
1358+ if (tmp[0 ] == ' ~' ) REJECT;
1359+ yyextra->fileName = tmp;
13231360 return Token::make_TK_WORD ();
13241361 }
13251362<St_IFile>{BLANK}*" \" " [^\n\" ]+" \" " {
@@ -1329,7 +1366,10 @@ SHOWDATE ([0-9]{4}"-"[0-9]{1,2}"-"[0-9]{1,2})?({WS}*[0-9]{1,2}":"[0-9]{1,2}(":"[
13291366 return Token::make_TK_WORD ();
13301367 }
13311368<St_File>{FILEMASK} {
1332- yyextra->token .name = yytext;
1369+ QCString tmp = yytext;
1370+ tmp = tmp.stripWhiteSpace ();
1371+ if (tmp[0 ] == ' ~' ) REJECT;
1372+ yyextra->token .name = tmp;
13331373 return Token::make_TK_WORD ();
13341374 }
13351375<St_File>" \" " [^\n\" ]+" \" " {
@@ -1352,6 +1392,11 @@ SHOWDATE ([0-9]{4}"-"[0-9]{1,2}"-"[0-9]{1,2})?({WS}*[0-9]{1,2}":"[0-9]{1,2}(":"[
13521392<St_Pattern>. {
13531393 yyextra->token .name += yytext;
13541394 }
1395+ <St_Link>{FILEMASK} {
1396+ if (yytext[0 ] == ' ~' ) REJECT;
1397+ yyextra->token .name = yytext;
1398+ return Token::make_TK_WORD ();
1399+ }
13551400<St_Link>{LINKMASK}|{REFWORD} {
13561401 yyextra->token .name = yytext;
13571402 return Token::make_TK_WORD ();
0 commit comments