String: Use MakeParameters with GetNextParameter

Instead of StringParameters subspan, to avoid GSs being able to
cause subspan boundary assertion failures
This commit is contained in:
Jonathan G Rennison
2023-12-14 01:07:26 +00:00
parent 7cf6600b47
commit 164e218736

View File

@@ -1445,7 +1445,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters &arg
}
default: {
StringParameters tmp_params(args, 1);
auto tmp_params = MakeParameters(args.GetNextParameter<int64>());
buff = GetStringWithArgs(buff, cargo_str, tmp_params, last);
break;
}
@@ -1459,7 +1459,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters &arg
if (cargo != CT_INVALID && cargo >= CargoSpec::GetArraySize()) break;
StringID cargo_str = (cargo == CT_INVALID) ? STR_QUANTITY_N_A : CargoSpec::Get(cargo)->quantifier;
StringParameters tmp_args(args, 1);
auto tmp_args = MakeParameters(args.GetNextParameter<int64>());
buff = GetStringWithArgs(buff, cargo_str, tmp_args, last);
break;
}
@@ -1712,7 +1712,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters &arg
case SCC_DEPOT_NAME: { // {DEPOT}
VehicleType vt = args.GetNextParameter<VehicleType>();
if (vt == VEH_AIRCRAFT) {
StringParameters tmp_params = StringParameters(args, 1);
auto tmp_params = MakeParameters(args.GetNextParameter<StationID>());
buff = GetStringWithArgs(buff, STR_FORMAT_DEPOT_NAME_AIRCRAFT, tmp_params, last);
break;
}