소스 검색

+ Patch from Joost Van Der Sluit to fix memory leak

git-svn-id: trunk@4030 -
michael 19 년 전
부모
커밋
07f925f991
3개의 변경된 파일14개의 추가작업 그리고 3개의 파일을 삭제
  1. 5 1
      fcl/inc/simpleipc.pp
  2. 2 0
      fcl/tests/ipcserver.pp
  3. 7 2
      fcl/unix/simpleipc.inc

+ 5 - 1
fcl/inc/simpleipc.pp

@@ -402,7 +402,11 @@ Var
 
 
 begin
 begin
   S:=TStringStream.Create(Msg);
   S:=TStringStream.Create(Msg);
-  SendMessage(mtString,S);
+  try
+    SendMessage(mtString,S);
+  finally
+    s.free;
+  end;
 end;
 end;
 
 
 procedure TSimpleIPCClient.SendStringmessageFmt(Msg: String;
 procedure TSimpleIPCClient.SendStringmessageFmt(Msg: String;

+ 2 - 0
fcl/tests/ipcserver.pp

@@ -1,3 +1,5 @@
+{$mode objfpc}
+{$h+}
 program ipccerver;
 program ipccerver;
 
 
 {$APPTYPE CONSOLE}
 {$APPTYPE CONSOLE}

+ 7 - 2
fcl/unix/simpleipc.inc

@@ -157,8 +157,13 @@ Var
 begin
 begin
   FStream.ReadBuffer(Hdr,SizeOf(Hdr));
   FStream.ReadBuffer(Hdr,SizeOf(Hdr));
   Count:=Hdr.MsgLen;
   Count:=Hdr.MsgLen;
-  Owner.FMsgData.Seek(0,soFrombeginning);
-  Owner.FMsgData.CopyFrom(FStream,Count);
+  if count > 0 then
+    begin
+    Owner.FMsgData.Seek(0,soFrombeginning);
+    Owner.FMsgData.CopyFrom(FStream,Count);
+    end
+  else
+    Owner.FMsgData.Size := 0;
 end;
 end;
 
 
 function TPipeServerComm.GetInstanceID: String;
 function TPipeServerComm.GetInstanceID: String;