Browse Source

Workaround for crash on winning the game

Ivan Savenko 1 year ago
parent
commit
5d16f035d7
1 changed files with 7 additions and 1 deletions
  1. 7 1
      lib/serializer/Connection.cpp

+ 7 - 1
lib/serializer/Connection.cpp

@@ -222,7 +222,13 @@ int CConnection::read(void * data, unsigned size)
 CConnection::~CConnection()
 {
 	if(handler)
-		handler->join();
+	{
+		// ugly workaround to avoid self-join if last strong reference to shared_ptr that owns this class has been released in this very thread, e.g. on netpack processing
+		if (boost::this_thread::get_id() != handler->get_id())
+			handler->join();
+		else
+			handler->detach();
+	}
 
 	close();
 }