Skip to content

Commit

Permalink
REVIEWED: LoadFontFromImage()
Browse files Browse the repository at this point in the history
Avoid crash on wrong sprite font
  • Loading branch information
raysan5 committed Oct 12, 2021
1 parent f9d4601 commit a1db022
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions src/rtext.c
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,9 @@ Font LoadFontFromImage(Image image, Color key, int firstChar)
#define MAX_GLYPHS_FROM_IMAGE 256 // Maximum number of glyphs supported on image scan
#endif

#define COLOR_EQUAL(col1, col2) ((col1.r == col2.r)&&(col1.g == col2.g)&&(col1.b == col2.b)&&(col1.a == col2.a))
#define COLOR_EQUAL(col1, col2) ((col1.r == col2.r) && (col1.g == col2.g) && (col1.b == col2.b) && (col1.a == col2.a))

Font font = GetFontDefault();

int charSpacing = 0;
int lineSpacing = 0;
Expand All @@ -374,8 +376,8 @@ Font LoadFontFromImage(Image image, Color key, int firstChar)

// We allocate a temporal arrays for chars data measures,
// once we get the actual number of chars, we copy data to a sized arrays
int tempCharValues[MAX_GLYPHS_FROM_IMAGE];
Rectangle tempCharRecs[MAX_GLYPHS_FROM_IMAGE];
int tempCharValues[MAX_GLYPHS_FROM_IMAGE] = { 0 };
Rectangle tempCharRecs[MAX_GLYPHS_FROM_IMAGE] = { 0 };

Color *pixels = LoadImageColors(image);

Expand All @@ -390,6 +392,8 @@ Font LoadFontFromImage(Image image, Color key, int firstChar)
if (!COLOR_EQUAL(pixels[y*image.width + x], key)) break;
}

if ((x == 0) || (y == 0)) return font;

charSpacing = x;
lineSpacing = y;

Expand Down Expand Up @@ -445,9 +449,7 @@ Font LoadFontFromImage(Image image, Color key, int firstChar)
.mipmaps = 1
};

// Create font with all data parsed from image
Font font = { 0 };

// Set font with all data parsed from image
font.texture = LoadTextureFromImage(fontClear); // Convert processed image to OpenGL texture
font.glyphCount = index;
font.glyphPadding = 0;
Expand Down

0 comments on commit a1db022

Please sign in to comment.