mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 21:09:24 +02:00
* Create container with unique name, improve thread-safety
This commit is contained in:
parent
cdc6ff0a30
commit
fc6c3cf487
@ -356,6 +356,7 @@ Type
|
||||
TCustomJSONRPCHandlerManager = Class(TComponent)
|
||||
Private
|
||||
FRegistering: Boolean;
|
||||
FHandlerCount : Int64;
|
||||
Protected
|
||||
procedure Initialize; virtual;
|
||||
procedure DoClear; virtual;
|
||||
@ -1542,7 +1543,7 @@ begin
|
||||
If Assigned(FDataModuleClass) then
|
||||
begin
|
||||
{$ifdef wmdebug}SendDebug(Format('Creating datamodule from class %d ',[Ord(Assigned(FDataModuleClass))]));{$endif}
|
||||
DM:=FDataModuleClass.Create(AOwner);
|
||||
DM:=FDataModuleClass.Create(Nil);
|
||||
{$ifdef wmdebug}SendDebug(Format('Created datamodule from class %s ',[DM.ClassName]));{$endif}
|
||||
I:=0;
|
||||
While (Result=Nil) and (I<DM.ComponentCount) do
|
||||
@ -1559,7 +1560,7 @@ begin
|
||||
end;
|
||||
end
|
||||
else
|
||||
DM:=TDataModule.CreateNew(AOwner,0);
|
||||
DM:=TDataModule.CreateNew(Nil,0);
|
||||
AContainer:=DM;
|
||||
If (Result=Nil) then
|
||||
begin
|
||||
@ -1796,6 +1797,7 @@ Function TCustomJSONRPCHandlerManager.GetHandler(
|
||||
): TCustomJSONRPCHandler;
|
||||
|
||||
Var
|
||||
N : String;
|
||||
O : TComponent;
|
||||
|
||||
begin
|
||||
@ -1803,7 +1805,13 @@ begin
|
||||
O:=Self
|
||||
else
|
||||
O:=AOwner;
|
||||
Result:=ADef.CreateInstance(O,AContainer);
|
||||
Result:=ADef.CreateInstance(Nil,AContainer);
|
||||
N:=aContainer.Name;
|
||||
if N='' then
|
||||
N:=aContainer.ClassName;
|
||||
N:=N+IntToStr(InterlockedIncrement64(FHandlerCount));
|
||||
aContainer.Name:=N;
|
||||
O.InsertComponent(aContainer);
|
||||
end;
|
||||
|
||||
Function TCustomJSONRPCHandlerManager.GetHandler(Const AClassName,
|
||||
|
Loading…
Reference in New Issue
Block a user