Fixes from freeglut_portable patch. Memory leak fix from John. Return_if_fail fix.
[freeglut] / freeglut-1.3 / freeglut_font.c
index 90d38e3..59d70eb 100644 (file)
@@ -137,7 +137,7 @@ void FGAPIENTRY glutBitmapCharacter( void* fontID, int character )
     /*
      * Make sure the character we want to output is valid
      */
-    freeglut_return_if_fail( character >= 0 && character < font->Quantity );
+    freeglut_return_if_fail( character >= 0 && character < 256 );
 
     /*
      * Then find the character we want to draw
@@ -196,7 +196,7 @@ int FGAPIENTRY glutBitmapWidth( void* fontID, int character )
     /*
      * Make sure the character we want to output is valid
      */
-    freeglut_return_val_if_fail( character > 0 && character < font->Quantity, 0 );
+    freeglut_return_val_if_fail( character > 0 && character < 256, 0 );
 
     /*
          * Scan the font looking for the specified character
@@ -225,6 +225,8 @@ void FGAPIENTRY glutStrokeCharacter( void* fontID, int character )
 
     schar = font->Characters[character];
 
+    freeglut_return_if_fail( schar );
+
     strip = schar->Strips;
 
     for (i = 0; i < schar->Number; i++, strip++)
@@ -244,6 +246,7 @@ void FGAPIENTRY glutStrokeCharacter( void* fontID, int character )
  */
 int FGAPIENTRY glutStrokeWidth( void* fontID, int character )
 {
+    const SFG_StrokeChar *schar;
     /*
      * First of all we'll need a font to use
      */
@@ -254,7 +257,11 @@ int FGAPIENTRY glutStrokeWidth( void* fontID, int character )
      */
     freeglut_return_if_fail( character >= 0 && character < font->Quantity );
 
-    return (font->Characters[character]->Right);
+    schar = font->Characters[character];
+
+    freeglut_return_if_fail( schar );
+
+    return (schar->Right);
 }
 
 /*