* Fix anumval wrong overwriting as found out by Sergey

git-svn-id: trunk@17861 -
This commit is contained in:
pierre 2011-06-28 20:39:53 +00:00
parent 4f12937bb3
commit c07bcefb6b

View File

@ -1805,27 +1805,34 @@ implementation
if oneval<>'' then
begin
if oneval[1]='-' then
val(oneval,signedval,code)
begin
val(oneval,signedval,code);
anumval:=qword(signedval);
end
else
val(oneval,anumval,code);
if code<>0 then
Comment(V_Error,'Invalid number '+avalue)
else if (indexpos<MAXVAL) then
else
begin
anumval:=qword(signedval);
if source_info.endian<>target_info.endian then
swapendian(anumval);
{ No range checking here }
if (indexpos<MAXVAL) then
begin
if source_info.endian<>target_info.endian then
swapendian(anumval);
{ No range checking here }
if bytesize=1 then
bytevalues[indexpos]:=byte(anumval)
else if bytesize=2 then
twobytevalues[indexpos]:=word(anumval)
else if bytesize=4 then
fourbytevalues[indexpos]:=dword(anumval)
else if bytesize=8 then
eightbytevalues[indexpos]:=anumval;
inc(indexpos);
if bytesize=1 then
bytevalues[indexpos]:=byte(anumval)
else if bytesize=2 then
twobytevalues[indexpos]:=word(anumval)
else if bytesize=4 then
fourbytevalues[indexpos]:=dword(anumval)
else if bytesize=8 then
eightbytevalues[indexpos]:=anumval;
inc(indexpos);
end
else
Comment(V_Error,'Buffer overrun in Order_values');
end;
end;
until allvals='';