summaryrefslogtreecommitdiff
path: root/packages/fcl-process/src/amicommon
diff options
context:
space:
mode:
authormichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2017-08-15 09:55:18 +0000
committermichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2017-08-15 09:55:18 +0000
commit8751748ae3fa8a0430e2eb2f2424f6ef8d881cf2 (patch)
tree89115ed22333a7b6849d79a07727254d07783749 /packages/fcl-process/src/amicommon
parent31d7460603922a4608f7a23cc44b0eec0a3965d6 (diff)
downloadfpc-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.inc18
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;