diff --git a/src/strings.cpp b/src/strings.cpp index f6df675b28..12bf512a8b 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1113,6 +1113,11 @@ static void FormatString(StringBuilder &builder, std::string_view str_arg, Strin const uint case_index = str_stack.top().case_index; char32_t b = consumer.ReadUtf8(); assert(b != 0); + if (b == 0) { + /* A NUL character should never be encountered, but for non-debug builds handle it gracefully. */ + builder += "(unexpected NUL)"; + continue; + } if (SCC_NEWGRF_FIRST <= b && b <= SCC_NEWGRF_LAST) { /* We need to pass some stuff as it might be modified. */