diff --git a/src/strings.cpp b/src/strings.cpp index e0bcb91b7f..2057964664 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -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) { /* {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(*v), plural_form), builder); } else { + SkipStringChoice(consumer); builder += "(invalid PLURAL parameter)"; } break;