From 2b6c1e12fcfe28deabb7fb25466e3b15d13447e8 Mon Sep 17 00:00:00 2001 From: marco Date: Thu, 18 Jun 2015 08:00:19 +0000 Subject: [PATCH] --- Merging r30260 into '.': U packages/fcl-json/src/jsonconf.pp --- Recording mergeinfo for merge of r30260 into '.': U . --- Merging r30294 into '.': U packages/fcl-res/src/versionresource.pp --- Recording mergeinfo for merge of r30294 into '.': G . --- Merging r30303 into '.': U packages/fcl-process/src/simpleipc.pp --- Recording mergeinfo for merge of r30303 into '.': G . --- Merging r30304 into '.': U packages/fcl-process/src/unix/simpleipc.inc --- Recording mergeinfo for merge of r30304 into '.': G . # revisions: 30260,30294,30303,30304 git-svn-id: branches/fixes_3_0@31111 - --- packages/fcl-json/src/jsonconf.pp | 10 ++++-- packages/fcl-process/src/simpleipc.pp | 39 ++++++++++++++++----- packages/fcl-process/src/unix/simpleipc.inc | 16 +++------ packages/fcl-res/src/versionresource.pp | 8 ++++- 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/packages/fcl-json/src/jsonconf.pp b/packages/fcl-json/src/jsonconf.pp index cd92eee95a..bc5653207b 100644 --- a/packages/fcl-json/src/jsonconf.pp +++ b/packages/fcl-json/src/jsonconf.pp @@ -73,6 +73,7 @@ type public constructor Create(AOwner: TComponent); override; destructor Destroy; override; + Procedure Reload; procedure Clear; procedure Flush; // Writes the JSON file procedure OpenKey(const aPath: WideString; AllowCreate : Boolean); @@ -528,11 +529,16 @@ begin DeletePath(APath); end; +Procedure TJSONConfig.Reload; + +begin + if Length(Filename) > 0 then + DoSetFilename(Filename,True); +end; procedure TJSONConfig.Loaded; begin inherited Loaded; - if Length(Filename) > 0 then - DoSetFilename(Filename,True); + Reload; end; function TJSONConfig.FindPath(const APath: WideString; AllowCreate: Boolean diff --git a/packages/fcl-process/src/simpleipc.pp b/packages/fcl-process/src/simpleipc.pp index 693a4b28d1..e9b83c4add 100644 --- a/packages/fcl-process/src/simpleipc.pp +++ b/packages/fcl-process/src/simpleipc.pp @@ -76,6 +76,7 @@ Type Procedure CheckActive; Procedure Activate; virtual; abstract; Procedure Deactivate; virtual; abstract; + Procedure Loaded; override; Property Busy : Boolean Read FBusy; Published Property Active : Boolean Read FActive Write SetActive; @@ -238,24 +239,29 @@ end; procedure TSimpleIPC.CheckInactive; begin - If Active then - DoError(SErrActive,[]); + if not (csLoading in ComponentState) then + If Active then + DoError(SErrActive,[]); end; procedure TSimpleIPC.CheckActive; begin - If Not Active then - DoError(SErrInActive,[]); + if not (csLoading in ComponentState) then + If Not Active then + DoError(SErrInActive,[]); end; procedure TSimpleIPC.SetActive(const AValue: Boolean); begin if (FActive<>AValue) then begin - If AValue then - Activate - else - Deactivate; + if (csLoading in ComponentState) then + FActive:=AValue + else + If AValue then + Activate + else + Deactivate; end; end; @@ -268,6 +274,20 @@ begin end; end; +Procedure TSimpleIPC.Loaded; + +Var + B : Boolean; + +begin + B:=FActive; + if B then + begin + Factive:=False; + Activate; + end; +end; + { --------------------------------------------------------------------- TSimpleIPCServer ---------------------------------------------------------------------} @@ -374,6 +394,9 @@ begin StopServer; end; + + + { --------------------------------------------------------------------- TSimpleIPCClient ---------------------------------------------------------------------} diff --git a/packages/fcl-process/src/unix/simpleipc.inc b/packages/fcl-process/src/unix/simpleipc.inc index 5f65feb1c6..f64a2bccca 100644 --- a/packages/fcl-process/src/unix/simpleipc.inc +++ b/packages/fcl-process/src/unix/simpleipc.inc @@ -110,17 +110,13 @@ end; constructor TPipeClientComm.Create(AOWner: TSimpleIPCClient); - -Var - D : String; - begin inherited Create(AOWner); FFileName:=Owner.ServerID; If (Owner.ServerInstance<>'') then FFileName:=FFileName+'-'+Owner.ServerInstance; - D:='/tmp/'; // Change to something better later - FFileName:=D+FFileName; + if FFileName[1]<>'/' then + FFileName:=GetTempDir(true)+FFileName; end; @@ -200,17 +196,13 @@ Type end; constructor TPipeServerComm.Create(AOWner: TSimpleIPCServer); - -Var - D : String; - begin inherited Create(AOWner); FFileName:=Owner.ServerID; If Not Owner.Global then FFileName:=FFileName+'-'+IntToStr(fpGetPID); - D:='/tmp/'; // Change to something better later - FFileName:=D+FFileName; + if FFileName[1]<>'/' then + FFileName:=GetTempDir(Owner.Global)+FFileName; end; diff --git a/packages/fcl-res/src/versionresource.pp b/packages/fcl-res/src/versionresource.pp index 353b3a3e47..071730cc5f 100644 --- a/packages/fcl-res/src/versionresource.pp +++ b/packages/fcl-res/src/versionresource.pp @@ -256,12 +256,18 @@ var block : TVerBlockHeader; tmp : integer; vinfo : TVerTranslationInfo; before : int64; + isBlockHeaderRead: boolean; begin Result:=0; + isBlockHeaderRead:=false; while toread>0 do begin before:=RawData.Position; - ReadBlockHeader(block); + if not isBlockHeaderRead then + begin + ReadBlockHeader(block); + isBlockHeaderRead:=true; + end; if (block.valtype<>0) or (block.key<>'Translation') then RawData.Seek(block.vallength,soFromCurrent) else