mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-25 05:51:38 +02:00
* shortstring reuse fixed
This commit is contained in:
parent
57b01570ba
commit
6fa76bfc12
@ -147,7 +147,7 @@ implementation
|
||||
lastlabel : plabel;
|
||||
pc : pchar;
|
||||
same_string : boolean;
|
||||
l,
|
||||
l,j,
|
||||
i,mylength : longint;
|
||||
begin
|
||||
lastlabel:=nil;
|
||||
@ -176,26 +176,44 @@ implementation
|
||||
(pai_string(hp1)^.len=mylength) then
|
||||
begin
|
||||
same_string:=true;
|
||||
for i:=0 to p^.length do
|
||||
if pai_string(hp1)^.str[i]<>p^.value_str[i] then
|
||||
begin
|
||||
same_string:=false;
|
||||
break;
|
||||
end;
|
||||
{ if shortstring then check the length byte first and
|
||||
set the start index to 1 }
|
||||
if is_shortstring(p^.resulttype) then
|
||||
begin
|
||||
if p^.length<>ord(pai_string(hp1)^.str[0]) then
|
||||
same_string:=false;
|
||||
j:=1;
|
||||
end
|
||||
else
|
||||
j:=0;
|
||||
{ don't check if the length byte was already wrong }
|
||||
if same_string then
|
||||
begin
|
||||
{ found! }
|
||||
p^.lab_str:=lastlabel;
|
||||
if (p^.stringtype in [st_ansistring,st_widestring]) then
|
||||
begin
|
||||
for i:=0 to p^.length do
|
||||
begin
|
||||
if pai_string(hp1)^.str[j]<>p^.value_str[i] then
|
||||
begin
|
||||
getdatalabel(l2);
|
||||
consts^.concat(new(pai_label,init(l2)));
|
||||
consts^.concat(new(pai_const_symbol,init(lab2str(p^.lab_str))));
|
||||
{ return the offset of the real string }
|
||||
p^.lab_str:=l2;
|
||||
same_string:=false;
|
||||
break;
|
||||
end;
|
||||
break;
|
||||
end;
|
||||
inc(j);
|
||||
end;
|
||||
end;
|
||||
{ found ? }
|
||||
if same_string then
|
||||
begin
|
||||
p^.lab_str:=lastlabel;
|
||||
{ create a new entry for ansistrings, but reuse the data }
|
||||
if (p^.stringtype in [st_ansistring,st_widestring]) then
|
||||
begin
|
||||
getdatalabel(l2);
|
||||
consts^.concat(new(pai_label,init(l2)));
|
||||
consts^.concat(new(pai_const_symbol,init(lab2str(p^.lab_str))));
|
||||
{ return the offset of the real string }
|
||||
p^.lab_str:=l2;
|
||||
end;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
lastlabel:=nil;
|
||||
end;
|
||||
@ -384,7 +402,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.29 1999-02-25 21:02:25 peter
|
||||
Revision 1.30 1999-03-31 13:51:49 peter
|
||||
* shortstring reuse fixed
|
||||
|
||||
Revision 1.29 1999/02/25 21:02:25 peter
|
||||
* ag386bin updates
|
||||
+ coff writer
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user