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