Bug 851563 - Fix memory leak in UnixSocketConsumer, r=qdot

This commit is contained in:
Eric Chou 2013-03-17 23:39:08 -07:00
parent f1dceb31cf
commit 211f1afa9e

View File

@ -780,12 +780,16 @@ UnixSocketConsumer::ConnectSocket(UnixSocketConnector* aConnector,
{
MOZ_ASSERT(aConnector);
MOZ_ASSERT(NS_IsMainThread());
nsAutoPtr<UnixSocketConnector> connector(aConnector);
if (mImpl) {
NS_WARNING("Socket already connecting/connected!");
return false;
}
nsCString addr(aAddress);
mImpl = new UnixSocketImpl(this, aConnector, addr);
mImpl = new UnixSocketImpl(this, connector.forget(), addr);
MessageLoop* ioLoop = XRE_GetIOMessageLoop();
mConnectionStatus = SOCKET_CONNECTING;
if (aDelayMs > 0) {
@ -801,11 +805,15 @@ UnixSocketConsumer::ListenSocket(UnixSocketConnector* aConnector)
{
MOZ_ASSERT(aConnector);
MOZ_ASSERT(NS_IsMainThread());
nsAutoPtr<UnixSocketConnector> connector(aConnector);
if (mImpl) {
NS_WARNING("Socket already connecting/connected!");
return false;
}
mImpl = new UnixSocketImpl(this, aConnector, EmptyCString());
mImpl = new UnixSocketImpl(this, connector.forget(), EmptyCString());
mConnectionStatus = SOCKET_LISTENING;
XRE_GetIOMessageLoop()->PostTask(FROM_HERE,
new SocketAcceptTask(mImpl));