diff --git a/components/codetools/linkscanner.pas b/components/codetools/linkscanner.pas index e64677ba66..34bbd4db0b 100644 --- a/components/codetools/linkscanner.pas +++ b/components/codetools/linkscanner.pas @@ -1292,20 +1292,31 @@ end; procedure TLinkScanner.SkipComment; // a normal pascal {} comment +var + p: PChar; begin CommentStyle:=CommentTP; CommentStartPos:=SrcPos; + p:=@Src[SrcPos]+1; IncCommentLevel; - inc(SrcPos); CommentInnerStartPos:=SrcPos; { HandleSwitches can dec CommentLevel } - while (SrcPos<=SrcLen) and (CommentLevel>0) do begin - case Src[SrcPos] of + while true do begin + case p^ of + #0: break; '{' : IncCommentLevel; - '}' : DecCommentLevel; + '}' : + begin + DecCommentLevel; + if CommentLevel=0 then begin + inc(p); + break; + end; + end; end; - inc(SrcPos); + inc(p); end; + SrcPos:=p-PChar(Src)+1; CommentEndPos:=SrcPos; CommentInnerEndPos:=SrcPos-1; if (CommentLevel>0) then CommentEndNotFound; diff --git a/components/synedit/synhighlighterpas.pp b/components/synedit/synhighlighterpas.pp index f43f55b9c9..9d16c8759e 100644 --- a/components/synedit/synhighlighterpas.pp +++ b/components/synedit/synhighlighterpas.pp @@ -2156,8 +2156,11 @@ begin #0,#10,#13: break; '}': if TopPascalCodeFoldBlockType=cfbtNestedComment then - EndPascalCodeFoldBlock - else begin + begin + Run:=p; + EndPascalCodeFoldBlock; + p:=Run; + end else begin fRange := fRange - [rsBor]; Inc(p); break; @@ -2165,7 +2168,9 @@ begin '{': if NestedComments then begin fStringLen := 1; + Run:=p; StartPascalCodeFoldBlock(cfbtNestedComment); + p:=Run; end; end; Inc(p);