Changeset - r5240:082c55cc478b
[Not reviewed]
master
0 1 0
Darkvater - 18 years ago 2006-12-04 18:57:09
darkvater@openttd.org
(svn r7362) -Fix (r7337): Free the freetype face after any possible error. For win32 do not use the
last font in the registry if no suitable font is found.
1 file changed with 6 insertions and 5 deletions:
0 comments (0 inline, 0 general)
fontcache.c
Show inline comments
 
@@ -68,7 +68,7 @@ static FT_Error GetFontByFaceName(const 
 
		DWORD dbuflen = lengthof(dbuffer);
 

	
 
		ret = RegEnumValue(hKey, index, vbuffer, &vbuflen, NULL, NULL, dbuffer, &dbuflen);
 
		if (ret != ERROR_SUCCESS) break;
 
		if (ret != ERROR_SUCCESS) goto registry_no_font_found;
 

	
 
		/* The font names in the registry are of the following 3 forms:
 
		 * - ADMUI3.fon
 
@@ -97,7 +97,7 @@ static FT_Error GetFontByFaceName(const 
 
	/* Some fonts are contained in .ttc files, TrueType Collection fonts. These
 
	 * contain multiple fonts inside this single file. GetFontData however
 
	 * returns the whole file, so we need to check each font inside to get the
 
	 * proper font. If not found, we will use the last font in the ttc.
 
	 * proper font.
 
	 * Also note that FreeType does not support UNICODE filesnames! */
 
#if defined(UNICODE)
 
	font_path = malloc(MAX_PATH);
 
@@ -123,6 +123,7 @@ static FT_Error GetFontByFaceName(const 
 
#endif
 

	
 
folder_error:
 
registry_no_font_found:
 
	RegCloseKey(hKey);
 
	return err;
 
}
 
@@ -241,10 +242,10 @@ static void LoadFreeTypeFont(const char 
 
				if (error == FT_Err_Ok) return;
 
			}
 
		}
 
	}
 

	
 
		FT_Done_Face(*face);
 
		*face = NULL;
 
	}
 
	FT_Done_Face(*face);
 
	*face = NULL;
 

	
 
	ShowInfoF("Unable to use '%s' for %s font, FreeType reported error 0x%X, using sprite font instead", font_name, type, error);
 
}
0 comments (0 inline, 0 general)