mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 11:24:14 +02:00
* Merging revisions 41819 from trunk:
------------------------------------------------------------------------ r41819 | michael | 2019-04-01 19:31:20 +0200 (Mon, 01 Apr 2019) | 1 line * Fix bug #35305, lazy instantiation of class alias list. Patch from Ondrej Pokorny ------------------------------------------------------------------------ git-svn-id: branches/fixes_3_2@42417 -
This commit is contained in:
parent
d18904d076
commit
b3760f5daa
@ -2491,7 +2491,7 @@ begin
|
||||
FindGlobalComponentList:=nil;
|
||||
IntConstList := TThreadList.Create;
|
||||
ClassList := TThreadList.Create;
|
||||
ClassAliasList := TStringList.Create;
|
||||
ClassAliasList := nil;
|
||||
{ on unix this maps to a simple rw synchornizer }
|
||||
GlobalNameSpace := TMultiReadExclusiveWriteSynchronizer.Create;
|
||||
RegisterInitComponentHandler(TComponent,@DefaultInitHandler);
|
||||
|
@ -44,9 +44,13 @@ procedure RegisterClassAlias(AClass: TPersistentClass; const Alias: string);
|
||||
var
|
||||
I : integer;
|
||||
begin
|
||||
I:=-1;
|
||||
ClassList.LockList;
|
||||
try
|
||||
i := ClassAliasList.IndexOf(Alias);
|
||||
if ClassAliasList=nil then
|
||||
ClassAliasList := TStringList.Create
|
||||
else
|
||||
i := ClassAliasList.IndexOf(Alias);
|
||||
if I = -1 then
|
||||
ClassAliasList.AddObject( Alias, TObject(AClass) );
|
||||
finally
|
||||
@ -101,16 +105,19 @@ begin
|
||||
Result := TPersistentClass(Items[I]);
|
||||
if Result.ClassNameIs(AClassName) then Exit;
|
||||
end;
|
||||
if Assigned(ClassAliasList) then
|
||||
begin
|
||||
I := ClassAliasList.Indexof(AClassName);
|
||||
if I >= 0 then //found
|
||||
Begin
|
||||
Result := TPersistentClass(ClassAliasList.Objects[i]);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
Result := nil;
|
||||
finally
|
||||
ClassList.Unlocklist;
|
||||
end;
|
||||
finally
|
||||
ClassList.Unlocklist;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user