mirror of
https://github.com/vcmi/vcmi.git
synced 2025-02-03 13:01:33 +02:00
Fix crash on accessing jsonnode with different type in release builds
This commit is contained in:
parent
12c69f8e04
commit
72980a3909
@ -310,63 +310,73 @@ JsonMap & JsonNode::Struct()
|
|||||||
const bool boolDefault = false;
|
const bool boolDefault = false;
|
||||||
bool JsonNode::Bool() const
|
bool JsonNode::Bool() const
|
||||||
{
|
{
|
||||||
if (getType() == JsonType::DATA_NULL)
|
assert(getType() == JsonType::DATA_NULL || getType() == JsonType::DATA_BOOL);
|
||||||
return boolDefault;
|
|
||||||
assert(getType() == JsonType::DATA_BOOL);
|
if (getType() == JsonType::DATA_BOOL)
|
||||||
return std::get<bool>(data);
|
return std::get<bool>(data);
|
||||||
|
|
||||||
|
return boolDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
const double floatDefault = 0;
|
const double floatDefault = 0;
|
||||||
double JsonNode::Float() const
|
double JsonNode::Float() const
|
||||||
{
|
{
|
||||||
if(getType() == JsonType::DATA_NULL)
|
assert(getType() == JsonType::DATA_NULL || getType() == JsonType::DATA_INTEGER || getType() == JsonType::DATA_FLOAT);
|
||||||
return floatDefault;
|
|
||||||
|
if(getType() == JsonType::DATA_FLOAT)
|
||||||
|
return std::get<double>(data);
|
||||||
|
|
||||||
if(getType() == JsonType::DATA_INTEGER)
|
if(getType() == JsonType::DATA_INTEGER)
|
||||||
return static_cast<double>(std::get<si64>(data));
|
return static_cast<double>(std::get<si64>(data));
|
||||||
|
|
||||||
assert(getType() == JsonType::DATA_FLOAT);
|
return floatDefault;
|
||||||
return std::get<double>(data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const si64 integetDefault = 0;
|
const si64 integerDefault = 0;
|
||||||
si64 JsonNode::Integer() const
|
si64 JsonNode::Integer() const
|
||||||
{
|
{
|
||||||
if(getType() == JsonType::DATA_NULL)
|
assert(getType() == JsonType::DATA_NULL || getType() == JsonType::DATA_INTEGER || getType() == JsonType::DATA_FLOAT);
|
||||||
return integetDefault;
|
|
||||||
|
if(getType() == JsonType::DATA_INTEGER)
|
||||||
|
return std::get<si64>(data);
|
||||||
|
|
||||||
if(getType() == JsonType::DATA_FLOAT)
|
if(getType() == JsonType::DATA_FLOAT)
|
||||||
return static_cast<si64>(std::get<double>(data));
|
return static_cast<si64>(std::get<double>(data));
|
||||||
|
|
||||||
assert(getType() == JsonType::DATA_INTEGER);
|
return integerDefault;
|
||||||
return std::get<si64>(data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string stringDefault = std::string();
|
const std::string stringDefault = std::string();
|
||||||
const std::string & JsonNode::String() const
|
const std::string & JsonNode::String() const
|
||||||
{
|
{
|
||||||
if (getType() == JsonType::DATA_NULL)
|
assert(getType() == JsonType::DATA_NULL || getType() == JsonType::DATA_STRING);
|
||||||
return stringDefault;
|
|
||||||
assert(getType() == JsonType::DATA_STRING);
|
if (getType() == JsonType::DATA_STRING)
|
||||||
return std::get<std::string>(data);
|
return std::get<std::string>(data);
|
||||||
|
|
||||||
|
return stringDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
const JsonVector vectorDefault = JsonVector();
|
const JsonVector vectorDefault = JsonVector();
|
||||||
const JsonVector & JsonNode::Vector() const
|
const JsonVector & JsonNode::Vector() const
|
||||||
{
|
{
|
||||||
if (getType() == JsonType::DATA_NULL)
|
assert(getType() == JsonType::DATA_NULL || getType() == JsonType::DATA_VECTOR);
|
||||||
return vectorDefault;
|
|
||||||
assert(getType() == JsonType::DATA_VECTOR);
|
if (getType() == JsonType::DATA_VECTOR)
|
||||||
return std::get<JsonVector>(data);
|
return std::get<JsonVector>(data);
|
||||||
|
|
||||||
|
return vectorDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
const JsonMap mapDefault = JsonMap();
|
const JsonMap mapDefault = JsonMap();
|
||||||
const JsonMap & JsonNode::Struct() const
|
const JsonMap & JsonNode::Struct() const
|
||||||
{
|
{
|
||||||
if (getType() == JsonType::DATA_NULL)
|
assert(getType() == JsonType::DATA_NULL || getType() == JsonType::DATA_STRUCT);
|
||||||
return mapDefault;
|
|
||||||
assert(getType() == JsonType::DATA_STRUCT);
|
if (getType() == JsonType::DATA_STRUCT)
|
||||||
return std::get<JsonMap>(data);
|
return std::get<JsonMap>(data);
|
||||||
|
|
||||||
|
return mapDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonNode & JsonNode::operator[](const std::string & child)
|
JsonNode & JsonNode::operator[](const std::string & child)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user