Changeset - r10940:9969af3bf257
[Not reviewed]
master
0 1 0
smatz - 15 years ago 2009-01-26 22:27:11
smatz@openttd.org
(svn r15279) -Fix: deadlock (with wide fonts) or desync when generating manager name
1 file changed with 5 insertions and 8 deletions:
0 comments (0 inline, 0 general)
src/company_cmd.cpp
Show inline comments
 
@@ -384,26 +384,23 @@ static byte GenerateCompanyColour()
 

	
 
static void GeneratePresidentName(Company *c)
 
{
 
	Company *cc;
 
	char buffer[100], buffer2[40];
 

	
 
	for (;;) {
 
restart:;
 

	
 
		c->president_name_2 = Random();
 
		c->president_name_1 = SPECSTR_PRESIDENT_NAME;
 

	
 
		char buffer[MAX_LENGTH_PRESIDENT_NAME_BYTES + 1];
 
		SetDParam(0, c->index);
 
		GetString(buffer, STR_PRESIDENT_NAME, lastof(buffer));
 
		if (strlen(buffer) >= 32 || GetStringBoundingBox(buffer).width >= 94)
 
			continue;
 
		if (strlen(buffer) >= MAX_LENGTH_PRESIDENT_NAME_BYTES) continue;
 

	
 
		Company *cc;
 
		FOR_ALL_COMPANIES(cc) {
 
			if (c != cc) {
 
				char buffer2[MAX_LENGTH_PRESIDENT_NAME_BYTES + 2];
 
				SetDParam(0, cc->index);
 
				GetString(buffer2, STR_PRESIDENT_NAME, lastof(buffer2));
 
				if (strcmp(buffer2, buffer) == 0)
 
					goto restart;
 
				if (strcmp(buffer2, buffer) == 0) goto restart;
 
			}
 
		}
 
		return;
0 comments (0 inline, 0 general)