2004.03.08 (月) 22:01:16 <u*j*2*6*> メモリリークする場所はほかにもでてきそうです。
2004.03.08 (月) 22:02:05 <u*j*2*6*> TStringHash?型の変数で、アイテムが入ってるのにStrHash_Resetを使ってしまってるものはメモリリークします。あとでなおします

shuusei241114:ゴースト処理でメモリリークが発生するバグを修正

diff --dos -urN 241113/SlavaNap.dof 241114/SlavaNap.dof
--- 241113/SlavaNap.dof	Sun Mar 07 06:28:50 2004
+++ 241114/SlavaNap.dof	Sun Mar 07 21:51:18 2004
@@ -79,5 +79,5 @@
 LegalTrademarks=http://www.slavanap.org/
 OriginalFilename=slavanap.exe
 ProductName=Delphi6でコンパイルしてあります
-ProductVersion=2.4.1.108.113
-Comments=shuusei241113:メモリリークしていた場所を修正
+ProductVersion=2.4.1.108.114
+Comments=shuusei241114:ゴースト処理でメモリリークが発生するバグを修正
Binary files 241113/SlavaNap.res and 241114/SlavaNap.res differ
diff --dos -urN 241113/constants.pas 241114/constants.pas
--- 241113/constants.pas	Sun Mar 07 06:08:40 2004
+++ 241114/constants.pas	Sun Mar 07 19:32:04 2004
@@ -27,7 +27,7 @@
  SLAVANAP_VERSION             = '2.4.1';
  SLAVANAP_BUILD               = '108';
  SLAVANAP_BUILD_DATE          = '24 January 2003';
- SLAVANAP_SHUUSEI             = '113';
+ SLAVANAP_SHUUSEI             = '114';
  SLAVANAP_SHUUSEI_DATE        = '7 March 2004';
  SLAVANAP_VERSION_SHORT       = SLAVANAP_TITLE+' '+SLAVANAP_VERSION;
  SLAVANAP_FULL                = SLAVANAP_TITLE+' '+SLAVANAP_VERSION+
diff --dos -urN 241113/handler.pas 241114/handler.pas
--- 241113/handler.pas	Sat Mar 06 07:17:14 2004
+++ 241114/handler.pas	Sun Mar 07 21:45:42 2004
@@ -8779,22 +8779,27 @@
  if user^.server<>nil then exit;
  if gcmd.cmd='' then
  begin // list users with that IP
-   users:=TMyList.Create;
-   db_online.GetClones(user^.ip,users);
-   for i:=0 to users.count-1 do
-   if users.Items[i]<>user then
-   begin
-    user2:=users.Items[i];
-    if query=queryNormal then
-     Error(user2^.username+' '+GetServerAlias(user2^.server))
-    else
-     Error(Format(RS_Handler_GhostList, [user2^.username, GetServerAlias(user2^.server)]));
+   users := TMyList.Create;
+   try
+     db_online.GetClones(user^.ip, users);
+     for i := 0 to users.count - 1 do
+     if users.Items[i] <> user then
+     begin
+       user2 := users.Items[i];
+       if query = queryNormal then
+         Error(user2^.username + ' ' + GetServerAlias(user2^.server))
+       else
+         Error(Format(RS_Handler_GhostList,
+           [user2^.username, GetServerAlias(user2^.server)]));
+     end;
+     if query = queryNormal then
+       local.Exec(gcmd.id, gcmd.cmd)
+     else
+       Error(GetLangT(LNG_ITEMSLISTED, IntToStr(users.count - 1)));
+     exit;
+   finally
+     users.Free;
    end;
-   if query=queryNormal then
-    local.Exec(gcmd.id,gcmd.cmd)
-   else
-    Error(GetLangT(LNG_ITEMSLISTED,IntToStr(users.count-1)));
-   exit;
  end;
  if not CheckParams(2) then exit;
  user2:=db_online.FindUser(hlist.Strings[0]);
Binary files 241113/output/SlavaNap.exe and 241114/output/SlavaNap.exe differ