1
0
mirror of https://github.com/OpenTTD/OpenTTD synced 2026-01-16 08:52:40 +01:00

Fix #14234, 16b4e73: Skip PLURAL data if parameter is invalid. (#14236)

This commit is contained in:
Peter Nelson
2025-05-08 09:06:56 +01:00
committed by GitHub
parent 1d18b4a80b
commit ae1f469aac

View File

@@ -765,6 +765,16 @@ static int DeterminePluralForm(int64_t count, uint plural_form)
}
}
static void SkipStringChoice(StringConsumer &consumer)
{
uint n = consumer.ReadUint8();
uint len = 0;
for (uint i = 0; i != n; i++) {
len += consumer.ReadUint8();
}
consumer.Skip(len);
}
static void ParseStringChoice(StringConsumer &consumer, uint form, StringBuilder &builder)
{
/* <NUM> {Length of each string} {each string} */
@@ -1196,6 +1206,7 @@ static void FormatString(StringBuilder &builder, std::string_view str_arg, Strin
if (v != nullptr) {
ParseStringChoice(consumer, DeterminePluralForm(static_cast<int64_t>(*v), plural_form), builder);
} else {
SkipStringChoice(consumer);
builder += "(invalid PLURAL parameter)";
}
break;