Fastream Technologies wrote:
> I agree with you in your both emails BUT emprically it works in the way I
> wrote. Try creating and destroying 1000 httpclients with NOFORMS and you
> will see that you will be wasting more than 20MB of RAM!!

I cannot reproduce that. What am I doing wrong?
20 MB should become visible in taskmanager, correct?

Here my test:
procedure TForm1.Button1Click(Sender: TObject);
var
    L : TList;
    H : THttpcli;
    I : Integer;
begin
    L := TList.Create;
    try
        for I := 1 to 1000 do
        begin
            H := THttpCli.Create(nil);
            L.Add(H);
            PostMessage(H.Handle, WM_USER + 1, 0, 0);
        end;
        Sleep(1000);
        for I := 0 to L.Count -1 do
        begin
            THttpCli(L[I]).Free;
            L[I] := nil;
        end;
    finally
       L.Free;
       L := nil;
    end;
end;

Arno

> 
> Regards,
> 
> SZ
> 
> ----- Original Message -----
> From: "Arno Garrels" <[EMAIL PROTECTED]>
> To: "ICS support mailing" <twsocket@elists.org>
> Sent: Saturday, February 04, 2006 5:38 PM
> Subject: Re: [twsocket] Remember the SetWindowLong bug in WSocket?
> 
> 
>> BTW: Also this returns TRUE for both windows:
>> 
>> function XSocketDeallocateHWnd(Wnd: HWND): boolean;
>> begin
>>    Result := (SetWindowLong(Wnd, 0, 0) <> 0) and DestroyWindow(Wnd);
>> end;
>> 
>> 
>> Arno Garrels wrote:
>>> Fastream Technologies wrote:
>>>> I found the ICS bug: when I put the below in the ThttpCli descendent's
>>>> destructor, it works:
>>>> 
>>>> SetWindowLong(FWindowHandle, 0, 0);
>>>>         DestroyWindow(FWindowHandle);
>>>>         SetWindowLong(FCtrlSocket->Handle, 0, 0);
>>>>         DestroyWindow(FCtrlSocket->Handle);
>>>> 
>>>> In THttpCli destructor, the destruction order of the CTrlSocket is
>>>> first so I think that's why it leaks the window. And no,
>>>> CodeGuard/Memproof/Eurekalog cannot show undeleted windows.
>>> 
>>> In WSocket.pas, XSocketDeallocateHWnd, there should be a call to
>>> SetWindowLong().
>>> 
>>> function XSocketDeallocateHWnd(Wnd: HWND): boolean;
>>> begin
>>>     SetWindowLong(Wnd, 0, 0); { Clear the object reference }
>>>     Result := DestroyWindow(Wnd);
>>> end;
>>> 
>>> If not, make sure that you have latest ICS-Beta installed (not
>>> sure if it is in the release). I've my doubts that order of
>>> destroying the windows matters, but not 100% sure.
>>> 
>>> ---
>>> Arno Garrels [TeamICS]
>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>> 
>>> 
>>>> Best Regards,
>>>> 
>>>> SZ
>>>> 
>>>> ----- Original Message -----
>>>> From: "Arno Garrels" <[EMAIL PROTECTED]>
>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>> Sent: Saturday, February 04, 2006 1:28 PM
>>>> Subject: Re: [twsocket] Remember the SetWindowLong bug in WSocket?
>>>> 
>>>> 
>>>>> Fastream Technologies wrote:
>>>>>> Hello,
>>>>>> 
>>>>>> That bug caused a lot of frustration here. Now the problem is
>>>>>> resolved for
>>>>>> FTP and web servers with my fix BUT for the reverse proxy, there is a
>>>>>> window leakage that cannot be detected by CodeGuard. It seems the
>>>>>> problem is in THttpCli destructor. XWindowDealloc returns true but I
>>>>>> have BIG doubts. It is a bit confusing because in THttpCli there are
>>>>>> two handles and two windows! One is for the THttpCli and the other
>>>>>> one is for THttpCli->CtrlSocket. Could someone take a look? It leaks
>>>>>> 40KB per socket!!!
>>>>> 
>>>>> Have you cross-checked one of the THttpCli demo projects?
>>>>> Here MemProof says "No leak found" (beside 1x 4k in MakeObjectInstance
>>>>> which
>>>>> is normal..).
>>>>> 
>>>>> ---
>>>>> Arno Garrels [TeamICS]
>>>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>>> 
>>>>> 
>>>>>> 
>>>>>> Best Regards,
>>>>>> 
>>>>>> SZ
>>>>> --
>>>>> To unsubscribe or change your settings for TWSocket mailing list
>>>>> please goto http://www.elists.org/mailman/listinfo/twsocket
>>>>> Visit our website at http://www.overbyte.be
>> --
>> To unsubscribe or change your settings for TWSocket mailing list
>> please goto http://www.elists.org/mailman/listinfo/twsocket
>> Visit our website at http://www.overbyte.be
-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to