Changeset - r18922:1f4490f370f0
[Not reviewed]
master
0 1 0
rubidium - 13 years ago 2012-01-09 22:20:44
rubidium@openttd.org
(svn r23782) -Fix [FS#4965]: crash due to genders used for station name in hangar string of Italian translation
1 file changed with 3 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/strings.cpp
Show inline comments
 
@@ -1147,194 +1147,195 @@ static char *FormatString(char *buff, co
 
				break;
 

	
 
			case SCC_FORCE: { // {FORCE}
 
				assert(_settings_game.locale.units < lengthof(_units));
 
				int64 args_array[1] = {_units[_settings_game.locale.units].c_force.ToDisplay(args->GetInt64())};
 
				StringParameters tmp_params(args_array);
 
				buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].force), &tmp_params, last);
 
				break;
 
			}
 

	
 
			case SCC_HEIGHT: { // {HEIGHT}
 
				int64 args_array[] = {_units[_settings_game.locale.units].c_height.ToDisplay(args->GetInt64())};
 
				StringParameters tmp_params(args_array);
 
				buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].height), &tmp_params, last);
 
				break;
 
			}
 

	
 
			case SCC_POWER: { // {POWER}
 
				assert(_settings_game.locale.units < lengthof(_units));
 
				int64 args_array[1] = {_units[_settings_game.locale.units].c_power.ToDisplay(args->GetInt64())};
 
				StringParameters tmp_params(args_array);
 
				buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].power), &tmp_params, last);
 
				break;
 
			}
 

	
 
			case SCC_VELOCITY: { // {VELOCITY}
 
				assert(_settings_game.locale.units < lengthof(_units));
 
				int64 args_array[] = {ConvertSpeedToDisplaySpeed(args->GetInt64(SCC_VELOCITY) * 10 / 16)};
 
				StringParameters tmp_params(args_array);
 
				buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].velocity), &tmp_params, last);
 
				break;
 
			}
 

	
 
			case SCC_VOLUME_SHORT: { // {VOLUME_SHORT}
 
				assert(_settings_game.locale.units < lengthof(_units));
 
				int64 args_array[1] = {_units[_settings_game.locale.units].c_volume.ToDisplay(args->GetInt64())};
 
				StringParameters tmp_params(args_array);
 
				buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].s_volume), &tmp_params, last);
 
				break;
 
			}
 

	
 
			case SCC_VOLUME_LONG: { // {VOLUME_LONG}
 
				assert(_settings_game.locale.units < lengthof(_units));
 
				int64 args_array[1] = {_units[_settings_game.locale.units].c_volume.ToDisplay(args->GetInt64(SCC_VOLUME_LONG))};
 
				StringParameters tmp_params(args_array);
 
				buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].l_volume), &tmp_params, last);
 
				break;
 
			}
 

	
 
			case SCC_WEIGHT_SHORT: { // {WEIGHT_SHORT}
 
				assert(_settings_game.locale.units < lengthof(_units));
 
				int64 args_array[1] = {_units[_settings_game.locale.units].c_weight.ToDisplay(args->GetInt64())};
 
				StringParameters tmp_params(args_array);
 
				buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].s_weight), &tmp_params, last);
 
				break;
 
			}
 

	
 
			case SCC_WEIGHT_LONG: { // {WEIGHT_LONG}
 
				assert(_settings_game.locale.units < lengthof(_units));
 
				int64 args_array[1] = {_units[_settings_game.locale.units].c_weight.ToDisplay(args->GetInt64(SCC_WEIGHT_LONG))};
 
				StringParameters tmp_params(args_array);
 
				buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].l_weight), &tmp_params, last);
 
				break;
 
			}
 

	
 
			case SCC_COMPANY_NAME: { // {COMPANY}
 
				const Company *c = Company::GetIfValid(args->GetInt32());
 
				if (c == NULL) break;
 

	
 
				if (c->name != NULL) {
 
					int64 args_array[] = {(uint64)(size_t)c->name};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, STR_JUST_RAW_STRING, &tmp_params, last);
 
				} else {
 
					int64 args_array[] = {c->name_2};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, c->name_1, &tmp_params, last);
 
				}
 
				break;
 
			}
 

	
 
			case SCC_COMPANY_NUM: { // {COMPANY_NUM}
 
				CompanyID company = (CompanyID)args->GetInt32();
 

	
 
				/* Nothing is added for AI or inactive companies */
 
				if (Company::IsValidHumanID(company)) {
 
					int64 args_array[] = {company + 1};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, STR_FORMAT_COMPANY_NUM, &tmp_params, last);
 
				}
 
				break;
 
			}
 

	
 
			case SCC_DEPOT_NAME: { // {DEPOT}
 
				VehicleType vt = (VehicleType)args->GetInt32(SCC_DEPOT_NAME);
 
				if (vt == VEH_AIRCRAFT) {
 
					int64 args_array[] = {args->GetInt32()};
 
					StringParameters tmp_params(args_array);
 
					uint64 args_array[] = {args->GetInt32()};
 
					WChar types_array[] = {SCC_STATION_NAME};
 
					StringParameters tmp_params(args_array, 1, types_array);
 
					buff = GetStringWithArgs(buff, STR_FORMAT_DEPOT_NAME_AIRCRAFT, &tmp_params, last);
 
					break;
 
				}
 

	
 
				const Depot *d = Depot::Get(args->GetInt32());
 
				if (d->name != NULL) {
 
					int64 args_array[] = {(uint64)(size_t)d->name};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, STR_JUST_RAW_STRING, &tmp_params, last);
 
				} else {
 
					int64 args_array[] = {d->town->index, d->town_cn + 1};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, STR_FORMAT_DEPOT_NAME_TRAIN + 2 * vt + (d->town_cn == 0 ? 0 : 1), &tmp_params, last);
 
				}
 
				break;
 
			}
 

	
 
			case SCC_ENGINE_NAME: { // {ENGINE}
 
				const Engine *e = Engine::GetIfValid(args->GetInt32(SCC_ENGINE_NAME));
 
				if (e == NULL) break;
 

	
 
				if (e->name != NULL && e->IsEnabled()) {
 
					int64 args_array[] = {(uint64)(size_t)e->name};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, STR_JUST_RAW_STRING, &tmp_params, last);
 
				} else {
 
					StringParameters tmp_params(NULL, 0, NULL);
 
					buff = GetStringWithArgs(buff, e->info.string_id, &tmp_params, last);
 
				}
 
				break;
 
			}
 

	
 
			case SCC_GROUP_NAME: { // {GROUP}
 
				const Group *g = Group::GetIfValid(args->GetInt32());
 
				if (g == NULL) break;
 

	
 
				if (g->name != NULL) {
 
					int64 args_array[] = {(uint64)(size_t)g->name};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, STR_JUST_RAW_STRING, &tmp_params, last);
 
				} else {
 
					int64 args_array[] = {g->index};
 
					StringParameters tmp_params(args_array);
 

	
 
					buff = GetStringWithArgs(buff, STR_FORMAT_GROUP_NAME, &tmp_params, last);
 
				}
 
				break;
 
			}
 

	
 
			case SCC_INDUSTRY_NAME: { // {INDUSTRY}
 
				const Industry *i = Industry::GetIfValid(args->GetInt32(SCC_INDUSTRY_NAME));
 
				if (i == NULL) break;
 

	
 
				/* First print the town name and the industry type name. */
 
				int64 args_array[2] = {i->town->index, GetIndustrySpec(i->type)->name};
 
				StringParameters tmp_params(args_array);
 

	
 
				buff = FormatString(buff, GetStringPtr(STR_FORMAT_INDUSTRY_NAME), &tmp_params, last, next_substr_case_index);
 
				next_substr_case_index = 0;
 
				break;
 
			}
 

	
 
			case SCC_PRESIDENT_NAME: { // {PRESIDENT_NAME}
 
				const Company *c = Company::GetIfValid(args->GetInt32(SCC_PRESIDENT_NAME));
 
				if (c == NULL) break;
 

	
 
				if (c->president_name != NULL) {
 
					int64 args_array[] = {(uint64)(size_t)c->president_name};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, STR_JUST_RAW_STRING, &tmp_params, last);
 
				} else {
 
					int64 args_array[] = {c->president_name_2};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, c->president_name_1, &tmp_params, last);
 
				}
 
				break;
 
			}
 

	
 
			case SCC_STATION_NAME: { // {STATION}
 
				StationID sid = args->GetInt32(SCC_STATION_NAME);
 
				const Station *st = Station::GetIfValid(sid);
 

	
 
				if (st == NULL) {
 
					/* The station doesn't exist anymore. The only place where we might
 
					 * be "drawing" an invalid station is in the case of cargo that is
 
					 * in transit. */
 
					StringParameters tmp_params(NULL, 0, NULL);
 
					buff = GetStringWithArgs(buff, STR_UNKNOWN_STATION, &tmp_params, last);
 
					break;
 
				}
 

	
 
				if (st->name != NULL) {
 
					int64 args_array[] = {(uint64)(size_t)st->name};
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, STR_JUST_RAW_STRING, &tmp_params, last);
 
				} else {
0 comments (0 inline, 0 general)