(svn r21408) -Codechange: limit president name by amount of characters, not bytes

This commit is contained in:
rubidium
2010-12-05 22:23:50 +00:00
parent 5c2674ec77
commit 83535a52ea
3 changed files with 6 additions and 6 deletions

View File

@@ -468,16 +468,16 @@ restart:;
/* Reserve space for extra unicode character. We need to do this to be able
* to detect too long president name. */
char buffer[MAX_LENGTH_PRESIDENT_NAME_BYTES + MAX_CHAR_LENGTH];
char buffer[(MAX_LENGTH_PRESIDENT_NAME_CHARS + 1) * MAX_CHAR_LENGTH];
SetDParam(0, c->index);
GetString(buffer, STR_PRESIDENT_NAME, lastof(buffer));
if (strlen(buffer) >= MAX_LENGTH_PRESIDENT_NAME_BYTES) continue;
if (Utf8StringLength(buffer) >= MAX_LENGTH_PRESIDENT_NAME_CHARS) continue;
Company *cc;
FOR_ALL_COMPANIES(cc) {
if (c != cc) {
/* Reserve extra space so even overlength president names can be compared. */
char buffer2[MAX_LENGTH_PRESIDENT_NAME_BYTES + MAX_CHAR_LENGTH];
char buffer2[(MAX_LENGTH_PRESIDENT_NAME_CHARS + 1) * MAX_CHAR_LENGTH];
SetDParam(0, cc->index);
GetString(buffer2, STR_PRESIDENT_NAME, lastof(buffer2));
if (strcmp(buffer2, buffer) == 0) goto restart;
@@ -1094,7 +1094,7 @@ CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32 p1, u
bool reset = StrEmpty(text);
if (!reset) {
if (strlen(text) >= MAX_LENGTH_PRESIDENT_NAME_BYTES) return CMD_ERROR;
if (Utf8StringLength(text) >= MAX_LENGTH_PRESIDENT_NAME_CHARS) return CMD_ERROR;
if (!IsUniquePresidentName(text)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE);
}