← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2629: fix miniupnp init crashes

 

------------------------------------------------------------
revno: 2629
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Mon 2011-10-10 19:43:39 +0200
message:
  fix miniupnp init crashes
modified:
  dcpp/ConnectivityManager.cpp
  dcpp/ConnectivityManager.h
  dcpp/DCPlusPlus.cpp
  dcpp/GeoIP.cpp
  dcpp/GeoIP.h
  win32/Mapper_MiniUPnPc.cpp


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/ConnectivityManager.cpp'
--- dcpp/ConnectivityManager.cpp	2011-05-06 21:39:48 +0000
+++ dcpp/ConnectivityManager.cpp	2011-10-10 17:43:39 +0000
@@ -150,9 +150,9 @@
 	ConnectionManager::getInstance()->disconnect();
 }
 
-void ConnectivityManager::log(const string& message) {
+void ConnectivityManager::log(string&& message) {
 	if(BOOLSETTING(AUTO_DETECT_CONNECTION)) {
-		status = move(message);
+		status = forward<string>(message);
 		LogManager::getInstance()->message(_("Connectivity: ") + status);
 		fire(ConnectivityManagerListener::Message(), status);
 	} else {

=== modified file 'dcpp/ConnectivityManager.h'
--- dcpp/ConnectivityManager.h	2011-05-06 21:39:48 +0000
+++ dcpp/ConnectivityManager.h	2011-10-10 17:43:39 +0000
@@ -60,7 +60,7 @@
 	virtual ~ConnectivityManager() { }
 
 	void mappingFinished(const string& mapper);
-	void log(const string& msg);
+	void log(string&& message);
 
 	void startSocket();
 	void listen();

=== modified file 'dcpp/DCPlusPlus.cpp'
--- dcpp/DCPlusPlus.cpp	2011-10-08 15:21:54 +0000
+++ dcpp/DCPlusPlus.cpp	2011-10-10 17:43:39 +0000
@@ -100,9 +100,9 @@
 	}
 #endif
 
-	auto announce = [&f, &p](const string&& str) {
+	auto announce = [&f, &p](const string& str) {
 		if(f)
-			(*f)(p, forward<const string>(str));
+			(*f)(p, str);
 	};
 
 	announce(_("Users"));

=== modified file 'dcpp/GeoIP.cpp'
--- dcpp/GeoIP.cpp	2011-10-08 15:21:54 +0000
+++ dcpp/GeoIP.cpp	2011-10-10 17:43:39 +0000
@@ -29,7 +29,7 @@
 
 namespace dcpp {
 
-GeoIP::GeoIP(const string&& path) : geo(0), path(path) {
+GeoIP::GeoIP(string&& path) : geo(0), path(forward<string>(path)) {
 	if(File::getSize(path) <= 0 && !decompress()) {
 		return;
 	}

=== modified file 'dcpp/GeoIP.h'
--- dcpp/GeoIP.h	2011-10-08 15:21:54 +0000
+++ dcpp/GeoIP.h	2011-10-10 17:43:39 +0000
@@ -33,7 +33,7 @@
 
 class GeoIP : boost::noncopyable {
 public:
-	explicit GeoIP(const string&& path);
+	explicit GeoIP(string&& path);
 	~GeoIP();
 
 	string getCountry(const string& ip) const;

=== modified file 'win32/Mapper_MiniUPnPc.cpp'
--- win32/Mapper_MiniUPnPc.cpp	2011-08-09 11:33:36 +0000
+++ win32/Mapper_MiniUPnPc.cpp	2011-10-10 17:43:39 +0000
@@ -47,15 +47,19 @@
 	UPNPUrls urls;
 	IGDdatas data;
 
-	initialized = UPNP_GetValidIGD(devices, &urls, &data, 0, 0) == 1;
+	auto res = UPNP_GetValidIGD(devices, &urls, &data, 0, 0);
+
+	initialized = res == 1;
 	if(initialized) {
 		url = urls.controlURL;
 		service = data.first.servicetype;
 		device = data.CIF.friendlyName;
 	}
 
-	FreeUPNPUrls(&urls);
-	freeUPNPDevlist(devices);
+	if(res) {
+		FreeUPNPUrls(&urls);
+		freeUPNPDevlist(devices);
+	}
 
 	return initialized;
 }