mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-03 00:10:51 +02:00
* Fix anumval wrong overwriting as found out by Sergey
git-svn-id: trunk@17861 -
This commit is contained in:
parent
4f12937bb3
commit
c07bcefb6b
@ -1805,27 +1805,34 @@ implementation
|
|||||||
if oneval<>'' then
|
if oneval<>'' then
|
||||||
begin
|
begin
|
||||||
if oneval[1]='-' then
|
if oneval[1]='-' then
|
||||||
val(oneval,signedval,code)
|
begin
|
||||||
|
val(oneval,signedval,code);
|
||||||
|
anumval:=qword(signedval);
|
||||||
|
end
|
||||||
else
|
else
|
||||||
val(oneval,anumval,code);
|
val(oneval,anumval,code);
|
||||||
if code<>0 then
|
if code<>0 then
|
||||||
Comment(V_Error,'Invalid number '+avalue)
|
Comment(V_Error,'Invalid number '+avalue)
|
||||||
else if (indexpos<MAXVAL) then
|
else
|
||||||
begin
|
begin
|
||||||
anumval:=qword(signedval);
|
if (indexpos<MAXVAL) then
|
||||||
if source_info.endian<>target_info.endian then
|
begin
|
||||||
swapendian(anumval);
|
if source_info.endian<>target_info.endian then
|
||||||
{ No range checking here }
|
swapendian(anumval);
|
||||||
|
{ No range checking here }
|
||||||
|
|
||||||
if bytesize=1 then
|
if bytesize=1 then
|
||||||
bytevalues[indexpos]:=byte(anumval)
|
bytevalues[indexpos]:=byte(anumval)
|
||||||
else if bytesize=2 then
|
else if bytesize=2 then
|
||||||
twobytevalues[indexpos]:=word(anumval)
|
twobytevalues[indexpos]:=word(anumval)
|
||||||
else if bytesize=4 then
|
else if bytesize=4 then
|
||||||
fourbytevalues[indexpos]:=dword(anumval)
|
fourbytevalues[indexpos]:=dword(anumval)
|
||||||
else if bytesize=8 then
|
else if bytesize=8 then
|
||||||
eightbytevalues[indexpos]:=anumval;
|
eightbytevalues[indexpos]:=anumval;
|
||||||
inc(indexpos);
|
inc(indexpos);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Comment(V_Error,'Buffer overrun in Order_values');
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
until allvals='';
|
until allvals='';
|
||||||
|
Loading…
Reference in New Issue
Block a user