]> granicus.if.org Git - libass/commitdiff
Do not use FT_Glyph_Copy with NULL glyphs.
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>
Tue, 24 Apr 2007 17:36:03 +0000 (17:36 +0000)
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>
Tue, 24 Apr 2007 17:36:03 +0000 (17:36 +0000)
Contrary to the docs, it leaves garbage in *target.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23104 b3059339-0415-0410-9bf9-f77b7e298cf2

libass/ass_render.c

index 567e5583178e9d3d939f5a3a7586cfbb634ba082..e499770bca674bf6d63acdb77c77edaed8803b15 100644 (file)
@@ -1239,7 +1239,8 @@ static void get_outline_glyph(int symbol, glyph_info_t* info, FT_Vector* advance
        val = cache_find_glyph(&key);
        if (val) {
                FT_Glyph_Copy(val->glyph, &info->glyph);
-               FT_Glyph_Copy(val->outline_glyph, &info->outline_glyph);
+               if (val->outline_glyph)
+                       FT_Glyph_Copy(val->outline_glyph, &info->outline_glyph);
                info->bbox = val->bbox_scaled;
                info->advance.x = val->advance.x;
                info->advance.y = val->advance.y;
@@ -1260,8 +1261,10 @@ static void get_outline_glyph(int symbol, glyph_info_t* info, FT_Vector* advance
                        }
                }
 
+               memset(&v, 0, sizeof(v));
                FT_Glyph_Copy(info->glyph, &v.glyph);
-               FT_Glyph_Copy(info->outline_glyph, &v.outline_glyph);
+               if (info->outline_glyph)
+                       FT_Glyph_Copy(info->outline_glyph, &v.outline_glyph);
                v.advance = info->advance;
                v.bbox_scaled = info->bbox;
                cache_add_glyph(&key, &v);