Просмотр исходного кода

Apply some of Vadim's changes

I intentionally didn't transfer changes in CLoadIntegrityValidator since not really agree with them.
Arseniy Shestakov 9 лет назад
Родитель
Сommit
5f1254a29e
2 измененных файлов с 9 добавлено и 2 удалено
  1. 8 1
      lib/serializer/BinaryDeserializer.h
  2. 1 1
      lib/serializer/Connection.cpp

+ 8 - 1
lib/serializer/BinaryDeserializer.h

@@ -314,7 +314,14 @@ public:
 		}
 		else
 		{
-			auto typeInfo = applier.getApplier(tid)->loadPtr(*this,&data, pid);
+			auto app = applier.getApplier(tid);
+			if(app == nullptr)
+			{
+				logGlobal->error("load %d %d - no loader exists", tid, pid);
+				data = nullptr;
+				return;
+			}
+			auto typeInfo = app->loadPtr(*this,&data, pid);
 			data = reinterpret_cast<T>(typeList.castRaw((void*)data, typeInfo, &typeid(typename std::remove_const<typename std::remove_pointer<T>::type>::type)));
 		}
 	}

+ 1 - 1
lib/serializer/Connection.cpp

@@ -216,7 +216,7 @@ CPack * CConnection::retreivePack()
 	boost::unique_lock<boost::mutex> lock(*rmx);
 	logNetwork->traceStream() << "Listening... ";
 	iser & ret;
-	logNetwork->traceStream() << "\treceived server message of type " << typeid(*ret).name() << ", data: " << ret;
+	logNetwork->traceStream() << "\treceived server message of type " << (ret? typeid(*ret).name() : "nullptr") << ", data: " << ret;
 	return ret;
 }