From 5fb7e718aec1169753039a67634d8127af2f6c47 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Fri, 30 Oct 2015 04:44:25 +0100 Subject: [PATCH] fix, UB in HL due to white attribs not always defined after skipping white chars --- src/ce_d2syn.pas | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/ce_d2syn.pas b/src/ce_d2syn.pas index dda7128d..6dae3e1f 100644 --- a/src/ce_d2syn.pas +++ b/src/ce_d2syn.pas @@ -240,7 +240,8 @@ const cmpRes: array[boolean] of integer = (-1, 1); begin result := inherited Compare(Range); - if result <> 0 then exit; + assert(Range <> nil); + {if result <> 0 then exit; // if Range is TSynD2SynRange then begin @@ -252,7 +253,7 @@ begin exit(cmpRes[src_t.tokenStringBracketsCount > tokenStringBracketsCount]); if src_t.namedRegionCount <> namedRegionCount then exit(cmpRes[src_t.namedRegionCount > namedRegionCount]); - end; + end; } end; procedure TSynD2SynRange.Clear; @@ -522,10 +523,13 @@ begin // spaces if (isWhite(reader^)) then begin - while(isWhite(reader^)) do - readerNext; fTokKind := tkBlank; - exit; + while(true) do + begin + if isWhite(reader^) then + readerNext; + exit; + end; end; // line comment / region beg-end