diff options
| author | Pierre Bourdon <delroth@gmail.com> | 2016-03-09 15:29:44 +0100 |
|---|---|---|
| committer | Pierre Bourdon <delroth@gmail.com> | 2016-03-09 15:29:44 +0100 |
| commit | a06eaabcdcdf1f7349cba40d68acfc06dc3926c1 (patch) | |
| tree | 0fb11f3fffcea5ae2dcceb3aa4f3a1ea71a3a152 /Source/Core | |
| parent | 1c7f5b139dea9311e137ee7a206c3ac4dbd4d9f8 (diff) | |
| parent | 84b0a930da3120c4ea015fa6740ca4b5ea6ae5b8 (diff) | |
Merge pull request #3721 from lioncash/net
NetPlayServer: Get rid of some explicit deallocations
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/NetPlayServer.cpp | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/Source/Core/Core/NetPlayServer.cpp b/Source/Core/Core/NetPlayServer.cpp index 07be5d5877..ffdc76cb38 100644 --- a/Source/Core/Core/NetPlayServer.cpp +++ b/Source/Core/Core/NetPlayServer.cpp @@ -918,10 +918,11 @@ bool NetPlayServer::initUPnP() memset(&m_upnp_data, 0, sizeof(IGDdatas)); // Find all UPnP devices + std::unique_ptr<UPNPDev, decltype(&freeUPNPDevlist)> devlist(nullptr, freeUPNPDevlist); #if MINIUPNPC_API_VERSION >= 14 - UPNPDev *devlist = upnpDiscover(2000, nullptr, nullptr, 0, 0, 2, &upnperror); + devlist.reset(upnpDiscover(2000, nullptr, nullptr, 0, 0, 2, &upnperror)); #else - UPNPDev *devlist = upnpDiscover(2000, nullptr, nullptr, 0, 0, &upnperror); + devlist.reset(upnpDiscover(2000, nullptr, nullptr, 0, 0, &upnperror)); #endif if (!devlist) { @@ -934,7 +935,7 @@ bool NetPlayServer::initUPnP() } // Look for the IGD - for (UPNPDev* dev = devlist; dev; dev = dev->pNext) + for (UPNPDev* dev = devlist.get(); dev; dev = dev->pNext) { if (strstr(dev->st, "InternetGatewayDevice")) igds.push_back(dev); @@ -942,18 +943,16 @@ bool NetPlayServer::initUPnP() for (const UPNPDev* dev : igds) { - char* descXML; + std::unique_ptr<char, decltype(&std::free)> descXML(nullptr, std::free); int statusCode = 200; #if MINIUPNPC_API_VERSION >= 16 - descXML = (char*)miniwget(dev->descURL, &descXMLsize, 0, &statusCode); + descXML.reset(static_cast<char*>(miniwget(dev->descURL, &descXMLsize, 0, &statusCode))); #else - descXML = (char*)miniwget(dev->descURL, &descXMLsize, 0); + descXML.reset(static_cast<char*>(miniwget(dev->descURL, &descXMLsize, 0))); #endif - if (descXML && (statusCode == 200)) + if (descXML && statusCode == 200) { - parserootdesc(descXML, descXMLsize, &m_upnp_data); - free(descXML); - descXML = nullptr; + parserootdesc(descXML.get(), descXMLsize, &m_upnp_data); GetUPNPUrls(&m_upnp_urls, &m_upnp_data, dev->descURL, 0); NOTICE_LOG(NETPLAY, "Got info from IGD at %s.", dev->descURL); @@ -961,17 +960,10 @@ bool NetPlayServer::initUPnP() } else { - if (descXML) - { - free(descXML); - descXML = nullptr; - } WARN_LOG(NETPLAY, "Error getting info from IGD at %s.", dev->descURL); } } - freeUPNPDevlist(devlist); - return true; } |
