1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

Fix possible memory leak (circular shared_ptr) in networking

This commit is contained in:
Ivan Savenko
2025-04-27 17:06:33 +03:00
parent e567e1b820
commit cd2837a84e
6 changed files with 18 additions and 18 deletions

View File

@@ -21,12 +21,12 @@ std::unique_ptr<INetworkHandler> INetworkHandler::createHandler()
}
NetworkHandler::NetworkHandler()
: io(std::make_shared<NetworkContext>())
: io(std::make_unique<NetworkContext>())
{}
std::unique_ptr<INetworkServer> NetworkHandler::createServerTCP(INetworkServerListener & listener)
{
return std::make_unique<NetworkServer>(listener, io);
return std::make_unique<NetworkServer>(listener, *io);
}
void NetworkHandler::connectToRemote(INetworkClientListener & listener, const std::string & host, uint16_t port)
@@ -50,7 +50,7 @@ void NetworkHandler::connectToRemote(INetworkClientListener & listener, const st
listener.onConnectionFailed(error.message());
return;
}
auto connection = std::make_shared<NetworkConnection>(listener, socket, io);
auto connection = std::make_shared<NetworkConnection>(listener, socket, *io);
connection->start();
listener.onConnectionEstablished(connection);
@@ -75,7 +75,7 @@ void NetworkHandler::createTimer(INetworkTimerListener & listener, std::chrono::
void NetworkHandler::createInternalConnection(INetworkClientListener & listener, INetworkServer & server)
{
auto localConnection = std::make_shared<InternalConnection>(listener, io);
auto localConnection = std::make_shared<InternalConnection>(listener, *io);
server.receiveInternalConnection(localConnection);