# HG changeset patch # User jkeil # Date 1031661887 0 # Node ID 0cb951ac01335fc982d55ddda608df856b33e024 # Parent 757e876d36fefee64499c684f9dbba11aeb2144c Use the character substitution code from fntRender() / fntTextWidth() for non-existant characters in fntTextHeight(), too. Otherwise the image height is mis-computed and we allocate an output image that is too small; this could result in malloc heap corruption. diff -r 757e876d36fe -r 0cb951ac0133 Gui/skin/font.c --- a/Gui/skin/font.c Tue Sep 10 12:38:19 2002 +0000 +++ b/Gui/skin/font.c Tue Sep 10 12:44:47 2002 +0000 @@ -119,7 +119,11 @@ if ( ( !Fonts[id] )||( !str[0] ) ) return 0; for ( i=0;i < (unsigned int)strlen( str );i++ ) - size+=( Fonts[id]->Fnt[ (unsigned char)str[i] ].sx == -1? Fonts[id]->Fnt[ 32 ].sx : Fonts[id]->Fnt[ (unsigned char)str[i] ].sx ); + { + unsigned char c = (unsigned char)str[i]; + if ( Fonts[id]->Fnt[c].sx == -1 ) c = ' '; + size+= Fonts[id]->Fnt[ c ].sx; + } return size; } @@ -131,7 +135,10 @@ for ( i=0;i < (int)strlen( str );i++ ) { - int h = Fonts[id]->Fnt[ (unsigned char)str[i] ].sy; + int h; + unsigned char c = (unsigned char)str[i]; + if ( Fonts[id]->Fnt[c].sx == -1 ) c = ' '; + h = Fonts[id]->Fnt[c].sy; if ( h > max ) max=h; } return max;