TServerSocket memory leak

William J. Deninger (deninger@uiuc.edu)
Mon, 22 Dec 1997 18:39:04 -0600


Hello,

The TServerSocket::Accept() seems to be missing a TSocket delete in the
event that a socket connection isn't waiting. When the
TServerSocket::SetOption( kNoBlock,1), is used and Accept is placed in a
working loop, system memory vanishes rather quickly.

TSocket *TServerSocket::Accept()
{
TSocket *socket = new TSocket;
Int_t soc = gSystem->AcceptConnection(fSocket);
if (soc == -1) return 0;
if (soc == -2) return (TSocket*) -1;

etc...
}

I think it needs the following:

TSocket *TServerSocket::Accept()
{
TSocket *socket = new TSocket;
Int_t soc = gSystem->AcceptConnection(fSocket);

if (soc == -1)
{
delete socket;
return 0;
}
if (soc == -2)
{
delete socket;
return (TSocket*) -1;
}

...etc
}

William Deninger
deninger@uiuc.edu