Blenfont: fix use incorrect clear of ascii glyph cache, leading to crash

when toggling use antialising user preference. Also fix some other use of
uninitialized memory found by valgrind.
This commit is contained in:
Brecht Van Lommel 2011-09-19 14:09:13 +00:00
parent 712e434a5f
commit 5c7b5c0b51
3 changed files with 7 additions and 18 deletions

@ -76,7 +76,7 @@ void BLF_dir_add(const char *path)
if (dir) /* already in the list ? just return. */
return;
dir= (DirBLF *)MEM_mallocN(sizeof(DirBLF), "BLF_dir_add");
dir= (DirBLF *)MEM_callocN(sizeof(DirBLF), "BLF_dir_add");
dir->path= BLI_strdup(path);
BLI_addhead(&global_font_dir, dir);
}
@ -104,7 +104,7 @@ char **BLF_dir_get(int *ndir)
if (!count)
return NULL;
dirs= (char **)MEM_mallocN(sizeof(char *) * count, "BLF_dir_get");
dirs= (char **)MEM_callocN(sizeof(char *) * count, "BLF_dir_get");
p= global_font_dir.first;
i= 0;
while (p) {

@ -511,7 +511,7 @@ FontBLF *blf_font_new(const char *name, const char *filename)
FT_Error err;
char *mfile;
font= (FontBLF *)MEM_mallocN(sizeof(FontBLF), "blf_font_new");
font= (FontBLF *)MEM_callocN(sizeof(FontBLF), "blf_font_new");
err= FT_New_Face(ft_lib, filename, 0, &font->face);
if (err) {
MEM_freeN(font);
@ -553,7 +553,7 @@ FontBLF *blf_font_new_from_mem(const char *name, unsigned char *mem, int mem_siz
FontBLF *font;
FT_Error err;
font= (FontBLF *)MEM_mallocN(sizeof(FontBLF), "blf_font_new_from_mem");
font= (FontBLF *)MEM_callocN(sizeof(FontBLF), "blf_font_new_from_mem");
err= FT_New_Memory_Face(ft_lib, mem, mem_size, 0, &font->face);
if (err) {
MEM_freeN(font);

@ -75,7 +75,7 @@ GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font)
{
GlyphCacheBLF *gc;
gc= (GlyphCacheBLF *)MEM_mallocN(sizeof(GlyphCacheBLF), "blf_glyph_cache_new");
gc= (GlyphCacheBLF *)MEM_callocN(sizeof(GlyphCacheBLF), "blf_glyph_cache_new");
gc->next= NULL;
gc->prev= NULL;
gc->size= font->size;
@ -131,10 +131,8 @@ void blf_glyph_cache_clear(FontBLF *font)
blf_glyph_free(g);
}
}
}
if(font->glyph_cache) {
memset(font->glyph_cache->glyph_ascii_table, 0, sizeof(font->glyph_cache->glyph_ascii_table));
memset(gc->glyph_ascii_table, 0, sizeof(gc->glyph_ascii_table));
}
}
@ -250,20 +248,11 @@ GlyphBLF *blf_glyph_add(FontBLF *font, unsigned int index, unsigned int c)
if (err || slot->format != FT_GLYPH_FORMAT_BITMAP)
return NULL;
g= (GlyphBLF *)MEM_mallocN(sizeof(GlyphBLF), "blf_glyph_add");
g->next= NULL;
g->prev= NULL;
g= (GlyphBLF *)MEM_callocN(sizeof(GlyphBLF), "blf_glyph_add");
g->c= c;
g->idx= (FT_UInt)index;
g->tex= 0;
g->build_tex= 0;
g->bitmap= NULL;
g->xoff= -1;
g->yoff= -1;
g->uv[0][0]= 0.0f;
g->uv[0][1]= 0.0f;
g->uv[1][0]= 0.0f;
g->uv[1][1]= 0.0f;
bitmap= slot->bitmap;
g->width= bitmap.width;
g->height= bitmap.rows;