* patch by Rika: improve EncodeUleb128/EncodeSleb128, part of #39750

This commit is contained in:
florian 2022-06-05 20:51:47 +02:00
parent 7ddeaa54c0
commit 51ab0d759f

View File

@ -1642,9 +1642,7 @@ implementation
pbuf^:=b; pbuf^:=b;
inc(pbuf); inc(pbuf);
inc(result); inc(result);
if (a=0) and (result>=len) then until (a=0) and (result>=len);
break;
until false;
end; end;
@ -1654,23 +1652,15 @@ implementation
more: boolean; more: boolean;
pbuf : pbyte; pbuf : pbyte;
begin begin
more := true;
result:=0; result:=0;
pbuf:=@buf; pbuf:=@buf;
repeat repeat
b := a and $7f; b := a and $7f;
a := SarInt64(a, 7); 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); inc(result);
more:=(result<len) or (a<>-(b shr 6));
pbuf^:=b or byte(more) shl 7;
inc(pbuf);
until not more; until not more;
end; end;