diff --git a/rtl/objpas/classes/classes.inc b/rtl/objpas/classes/classes.inc index bb20611bbc..bb030313dc 100644 --- a/rtl/objpas/classes/classes.inc +++ b/rtl/objpas/classes/classes.inc @@ -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); diff --git a/rtl/objpas/classes/cregist.inc b/rtl/objpas/classes/cregist.inc index 011776c56c..1354608438 100644 --- a/rtl/objpas/classes/cregist.inc +++ b/rtl/objpas/classes/cregist.inc @@ -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;