mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-27 00:41:08 +02:00
Fix potential crash on loading mod with invalid handler name
This commit is contained in:
@ -193,13 +193,16 @@ TObjectTypeHandler CObjectClassesHandler::loadSubObjectFromJson(const std::strin
|
|||||||
assert(identifier.find(':') == std::string::npos);
|
assert(identifier.find(':') == std::string::npos);
|
||||||
assert(!scope.empty());
|
assert(!scope.empty());
|
||||||
|
|
||||||
|
std::string handler = obj->handlerName;
|
||||||
if(!handlerConstructors.count(obj->handlerName))
|
if(!handlerConstructors.count(obj->handlerName))
|
||||||
{
|
{
|
||||||
logGlobal->error("Handler with name %s was not found!", obj->handlerName);
|
logMod->error("Handler with name %s was not found!", obj->handlerName);
|
||||||
return nullptr;
|
// workaround for potential crash - if handler does not exists, continue with generic handler that is used for objects without any custom logc
|
||||||
|
handler = "generic";
|
||||||
|
assert(handlerConstructors.count(handler) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto createdObject = handlerConstructors.at(obj->handlerName)();
|
auto createdObject = handlerConstructors.at(handler)();
|
||||||
|
|
||||||
createdObject->modScope = scope;
|
createdObject->modScope = scope;
|
||||||
createdObject->typeName = obj->identifier;;
|
createdObject->typeName = obj->identifier;;
|
||||||
|
Reference in New Issue
Block a user