1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-29 09:44:52 +01:00

Fix #6761: An assertion failed - Invalid Font index 65675

Special font bases were not converted in font_sprite_get_codepoint_width.
Assert converted to safe warning.
This commit is contained in:
Ted John
2017-12-02 11:47:14 +00:00
parent 0920e58f98
commit 6ef5154b02
2 changed files with 18 additions and 7 deletions

View File

@@ -121,13 +121,24 @@ sint32 font_sprite_get_codepoint_offset(sint32 codepoint)
}
}
sint32 font_sprite_get_codepoint_width(sint32 fontSpriteBase, sint32 codepoint)
sint32 font_sprite_get_codepoint_width(uint16 fontSpriteBase, sint32 codepoint)
{
uint32 spriteFontIdx = fontSpriteBase + font_sprite_get_codepoint_offset(codepoint);
#ifdef NO_RCT2
openrct2_assert(spriteFontIdx < countof(_spriteFontCharacterWidths), "Invalid font index %u", spriteFontIdx);
#endif
return _spriteFontCharacterWidths[spriteFontIdx];
if (fontSpriteBase == (uint16)FONT_SPRITE_BASE_MEDIUM_DARK ||
fontSpriteBase == (uint16)FONT_SPRITE_BASE_MEDIUM_EXTRA_DARK)
{
fontSpriteBase = (uint16)FONT_SPRITE_BASE_MEDIUM;
}
sint32 spriteFontIdx = fontSpriteBase + font_sprite_get_codepoint_offset(codepoint);
if (spriteFontIdx >= 0 && spriteFontIdx < countof(_spriteFontCharacterWidths))
{
return _spriteFontCharacterWidths[spriteFontIdx];
}
else
{
log_warning("Invalid font index %u", spriteFontIdx);
return _spriteFontCharacterWidths[0];
}
}
sint32 font_sprite_get_codepoint_sprite(sint32 fontSpriteBase, sint32 codepoint)

View File

@@ -72,7 +72,7 @@ extern "C" {
void font_sprite_initialise_characters();
sint32 font_sprite_get_codepoint_offset(sint32 codepoint);
sint32 font_sprite_get_codepoint_width(sint32 fontSpriteBase, sint32 codepoint);
sint32 font_sprite_get_codepoint_width(uint16 fontSpriteBase, sint32 codepoint);
sint32 font_sprite_get_codepoint_sprite(sint32 fontSpriteBase, sint32 codepoint);
sint32 font_get_size_from_sprite_base(uint16 spriteBase);
sint32 font_get_line_height(sint32 fontSpriteBase);