Преглед изворни кода

Workaround for crash on winning the game

Ivan Savenko пре 1 година
родитељ
комит
5d16f035d7
1 измењених фајлова са 7 додато и 1 уклоњено
  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();
 }