From 51ab0d759f6138a639453a429216f0907ac8dae8 Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 5 Jun 2022 20:51:47 +0200 Subject: [PATCH] * patch by Rika: improve EncodeUleb128/EncodeSleb128, part of #39750 --- compiler/cutils.pas | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/compiler/cutils.pas b/compiler/cutils.pas index b917b72b05..37c461f205 100644 --- a/compiler/cutils.pas +++ b/compiler/cutils.pas @@ -1642,9 +1642,7 @@ implementation pbuf^:=b; inc(pbuf); inc(result); - if (a=0) and (result>=len) then - break; - until false; + until (a=0) and (result>=len); end; @@ -1654,23 +1652,15 @@ implementation more: boolean; pbuf : pbyte; begin - more := true; result:=0; pbuf:=@buf; repeat b := a and $7f; a := SarInt64(a, 7); - - if (result+1>=len) and ( - ((a = 0) and (b and $40 = 0)) or - ((a = -1) and (b and $40 <> 0)) - ) then - more := false - else - b := b or $80; - pbuf^:=b; - inc(pbuf); inc(result); + more:=(result-(b shr 6)); + pbuf^:=b or byte(more) shl 7; + inc(pbuf); until not more; end;