mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Treat reading incorrect parameter type as a string error.
Previously reading a string as a number would return 0 instead.pull/12718/head
parent
3d8d0e0d26
commit
d1463f415f
|
@ -253,14 +253,24 @@ void GetStringWithArgs(StringBuilder &builder, StringID string, StringParameters
|
||||||
switch (tab) {
|
switch (tab) {
|
||||||
case TEXT_TAB_TOWN:
|
case TEXT_TAB_TOWN:
|
||||||
if (index >= 0xC0 && !game_script) {
|
if (index >= 0xC0 && !game_script) {
|
||||||
GetSpecialTownNameString(builder, index - 0xC0, args.GetNextParameter<uint32_t>());
|
try {
|
||||||
|
GetSpecialTownNameString(builder, index - 0xC0, args.GetNextParameter<uint32_t>());
|
||||||
|
} catch (const std::runtime_error &e) {
|
||||||
|
Debug(misc, 0, "GetStringWithArgs: {}", e.what());
|
||||||
|
builder += "(invalid string parameter)";
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TEXT_TAB_SPECIAL:
|
case TEXT_TAB_SPECIAL:
|
||||||
if (index >= 0xE4 && !game_script) {
|
if (index >= 0xE4 && !game_script) {
|
||||||
GetSpecialNameString(builder, index - 0xE4, args);
|
try {
|
||||||
|
GetSpecialNameString(builder, index - 0xE4, args);
|
||||||
|
} catch (const std::runtime_error &e) {
|
||||||
|
Debug(misc, 0, "GetStringWithArgs: {}", e.what());
|
||||||
|
builder += "(invalid string parameter)";
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -94,7 +94,7 @@ public:
|
||||||
const auto ¶m = GetNextParameterReference();
|
const auto ¶m = GetNextParameterReference();
|
||||||
const uint64_t *data = std::get_if<uint64_t>(¶m.data);
|
const uint64_t *data = std::get_if<uint64_t>(¶m.data);
|
||||||
if (data != nullptr) return static_cast<T>(*data);
|
if (data != nullptr) return static_cast<T>(*data);
|
||||||
return T{};
|
throw std::runtime_error("Attempt to read string parameter as integer");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -108,7 +108,7 @@ public:
|
||||||
const auto ¶m = GetNextParameterReference();
|
const auto ¶m = GetNextParameterReference();
|
||||||
const std::string *data = std::get_if<std::string>(¶m.data);
|
const std::string *data = std::get_if<std::string>(¶m.data);
|
||||||
if (data != nullptr) return data->c_str();
|
if (data != nullptr) return data->c_str();
|
||||||
return nullptr;
|
throw std::runtime_error("Attempt to read integer parameter as string");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue