From 0b1f218698efffcec3a2131d9b30f844a14d1c3f Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 16 Feb 2024 14:06:14 +0100 Subject: [PATCH] SynEdit: fix range check introduced in a7a0b3ee3afd467e1d136e58c9d617fb1a81f2cd - Issue #40778 --- components/synedit/synhighlighterhtml.pp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/components/synedit/synhighlighterhtml.pp b/components/synedit/synhighlighterhtml.pp index 6608b31897..69b8201583 100644 --- a/components/synedit/synhighlighterhtml.pp +++ b/components/synedit/synhighlighterhtml.pp @@ -48,7 +48,7 @@ unit SynHighlighterHTML; interface uses - SysUtils, Classes, Graphics, SynEditTypes, SynEditHighlighter, + SysUtils, Classes, Math, Graphics, SynEditTypes, SynEditHighlighter, SynEditHighlighterXMLBase, SynEditHighlighterFoldBase, SynEditStrConst; const @@ -2535,13 +2535,15 @@ begin Inc(Run, fStringLen); if ((FMode = shmXHtml) or (not fSimpleTag)) then begin if fLine[R] = '/' then begin - SetLength(s, fStringLen - 1); - move((fLine + R + 1)^, s[1], fStringLen-1); + SetLength(s, Max(fStringLen - 1, 0)); + if fStringLen > 1 then + move((fLine + R + 1)^, s[1], fStringLen-1); EndHtmlNodeCodeFoldBlock(R+1, s); end else if fLine[R] <> '!' then begin SetLength(s, fStringLen); - move((fLine + R)^, s[1], fStringLen); + if fStringLen > 0 then + move((fLine + R)^, s[1], fStringLen); StartHtmlNodeCodeFoldBlock(cfbtHtmlNode, R, s); end; end;