← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/bug_1826669_MapDownloandChange into lp:widelands/build20

 

Klaus Halfmann has proposed merging lp:~widelands-dev/widelands/bug_1826669_MapDownloandChange into lp:widelands/build20.

Commit message:
Fix for #1826669

Requested reviews:
  Toni Förster (stonerl): remote network test
Related bugs:
  Bug #1826669 in widelands: "R20-rc1 HeapUseAfterFree when changig Map during Download"
  https://bugs.launchpad.net/widelands/+bug/1826669

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug_1826669_MapDownloandChange/+merge/366616

Avoid double delete of _file in gameclient.cc
-- 
Your team Widelands Developers is subscribed to branch lp:widelands/build20.
=== modified file 'src/network/gameclient.cc'
--- src/network/gameclient.cc	2019-02-23 11:00:49 +0000
+++ src/network/gameclient.cc	2019-04-28 11:30:30 +0000
@@ -586,8 +586,10 @@
 		    d->settings.mapfilename.c_str());
 
 		// New map was set, so we clean up the buffer of a previously requested file
-		if (file_)
+        if (file_) {
 			delete file_;
+            file_ = NULL;
+        }
 		break;
 	}
 
@@ -637,8 +639,9 @@
 		s.unsigned_8(NETCMD_NEW_FILE_AVAILABLE);
 		d->net->send(s);
 
-		if (file_)
+		if (file_) {
 			delete file_;
+        	}
 
 		file_ = new NetTransferFile();
 		file_->bytes = bytes;

=== modified file 'src/network/gamehost.cc'
--- src/network/gamehost.cc	2019-02-23 11:00:49 +0000
+++ src/network/gamehost.cc	2019-04-28 11:30:30 +0000
@@ -539,7 +539,9 @@
 	d->net.reset();
 	d->promoter.reset();
 	delete d;
+    d = NULL;
 	delete file_;
+    file_ = NULL;
 }
 
 const std::string& GameHost::get_local_playername() const {

=== modified file 'src/network/network.h'
--- src/network/network.h	2019-02-23 11:00:49 +0000
+++ src/network/network.h	2019-04-28 11:30:30 +0000
@@ -185,6 +185,14 @@
 	std::string filename;
 	std::string md5sum;
 	std::vector<FilePart> parts;
+
+    NetTransferFile() {
+        // Allow Debugging
+    }
+
+    ~NetTransferFile() {
+        // Allow Debugging
+    }
 };
 
 class Deserializer {


Follow ups