diff options
| author | michael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2017-08-15 09:55:18 +0000 |
|---|---|---|
| committer | michael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2017-08-15 09:55:18 +0000 |
| commit | 8751748ae3fa8a0430e2eb2f2424f6ef8d881cf2 (patch) | |
| tree | 89115ed22333a7b6849d79a07727254d07783749 /packages/fcl-process/src/amicommon | |
| parent | 31d7460603922a4608f7a23cc44b0eec0a3965d6 (diff) | |
| download | fpc-8751748ae3fa8a0430e2eb2f2424f6ef8d881cf2.tar.gz | |
* Patch from Denis Kozlov to fix threaded server
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@36916 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-process/src/amicommon')
| -rw-r--r-- | packages/fcl-process/src/amicommon/simpleipc.inc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/packages/fcl-process/src/amicommon/simpleipc.inc b/packages/fcl-process/src/amicommon/simpleipc.inc index 00104c152c..80f590d1e2 100644 --- a/packages/fcl-process/src/amicommon/simpleipc.inc +++ b/packages/fcl-process/src/amicommon/simpleipc.inc @@ -234,6 +234,7 @@ Procedure TAmigaServerComm.ReadMessage; var Temp: PByte; MsgType: TMessageType; + Msg: TIPCServerMsg; begin if Assigned(MsgBody) then begin @@ -241,11 +242,18 @@ begin Inc(Temp, SizeOf(Exec.TMessage)); MsgType := 0; Move(Temp^, MsgType, SizeOf(TMessageType)); - Inc(Temp, SizeOf(TMessageType)); - Owner.FMsgType := MsgType; - Owner.FMsgData.Size := 0; - Owner.FMsgData.Seek(0, soFrombeginning); - Owner.FMsgData.WriteBuffer(temp^, MsgBody^.mn_Length); + Inc(Temp, SizeOf(TMessageType)); + + Msg := TIPCServerMsg.Create; + try + Msg.MsgType := MsgType; + Msg.Stream.WriteBuffer(Temp^, MsgBody^.mn_Length); + except + FreeAndNil(Msg); + raise; + end; + PushMessage(Msg); + System.FreeMem(MsgBody); MsgBody := nil; end; |
