From dcd71f5ab82c970125a880792a6ba6572edcf63a Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 6 Jan 2024 17:54:42 +0000 Subject: [PATCH] Strings: Exit early when scanning for gender data --- src/strings.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/strings.cpp b/src/strings.cpp index a0a1ff6e0b..572569cf5e 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1128,6 +1128,11 @@ static void FormatString(StringBuilder builder, const char *str_arg, StringParam if (str_stack.empty()) break; const char *&str = str_stack.top(); + if (_scan_for_gender_data && !builder.GetTargetString()->empty()) { + /* Early exit when scanning for gender data if target string is already non-empty */ + return; + } + if (SCC_NEWGRF_FIRST <= b && b <= SCC_NEWGRF_LAST) { /* We need to pass some stuff as it might be modified. */ StringParameters remaining = args.GetRemainingParameters(); @@ -1276,6 +1281,7 @@ static void FormatString(StringBuilder builder, const char *str_arg, StringParam if (_scan_for_gender_data) { builder.Utf8Encode(SCC_GENDER_INDEX); builder += *str++; + return; // Exit early } else { str++; }