* allow sp_generic_dummysym for procsyms even if there are no generic overloads

This commit is contained in:
Sven/Sarah Barth 2024-05-06 23:19:53 +02:00
parent 04631040b8
commit bfe5733624

View File

@ -1074,18 +1074,19 @@ implementation
end;
if sp_generic_dummy in symoptions then
begin
if not assigned(fgenprocsymovlds) then
internalerror(2021010602);
if not assigned(fgenprocsymovldsderefs) then
fgenprocsymovldsderefs:=tfplist.create
else
fgenprocsymovldsderefs.clear;
for i:=0 to fgenprocsymovlds.count-1 do
begin
sym:=tprocsym(fgenprocsymovlds[i]);
d.build(sym);
fgenprocsymovldsderefs.add(pointer(ptrint(d.dataidx)));
end;
{ this might happen for procsyms in classes that override symbols
in a parent class that generic overloads }
if assigned(fgenprocsymovlds) then
for i:=0 to fgenprocsymovlds.count-1 do
begin
sym:=tprocsym(fgenprocsymovlds[i]);
d.build(sym);
fgenprocsymovldsderefs.add(pointer(ptrint(d.dataidx)));
end;
end;
end;
@ -1109,16 +1110,19 @@ implementation
end;
if sp_generic_dummy in symoptions then
begin
if not assigned(fgenprocsymovlds) then
internalerror(2021010603);
{if not assigned(fgenprocsymovlds) then
internalerror(2021010603);}
if not assigned(fgenprocsymovldsderefs) then
internalerror(2021010302);
fgenprocsymovlds.clear;
for i:= 0 to fgenprocsymovldsderefs.count-1 do
if assigned(fgenprocsymovlds) then
begin
d.dataidx:=ptrint(fgenprocsymovldsderefs[i]);
sym:=tprocsym(d.resolve);
fgenprocsymovlds.add(sym);
fgenprocsymovlds.clear;
for i:= 0 to fgenprocsymovldsderefs.count-1 do
begin
d.dataidx:=ptrint(fgenprocsymovldsderefs[i]);
sym:=tprocsym(d.resolve);
fgenprocsymovlds.add(sym);
end;
end;
end;
end;