comparison libass/ass_parse.c @ 31875:ac6e48baa03d

Import libass 0.9.11 This version fixes a (sometimes pretty bad) memory leak.
author greg
date Wed, 11 Aug 2010 01:14:37 +0000
parents e64df5862cea
children 88eebbbbd6a0
comparison
equal deleted inserted replaced
31874:cedbffa1629d 31875:ac6e48baa03d
212 */ 212 */
213 static char *parse_vector_clip(ASS_Renderer *render_priv, char *p) 213 static char *parse_vector_clip(ASS_Renderer *render_priv, char *p)
214 { 214 {
215 int scale = 1; 215 int scale = 1;
216 int res = 0; 216 int res = 0;
217 ASS_Drawing *drawing; 217 ASS_Drawing *drawing = render_priv->state.clip_drawing;
218 218
219 ass_drawing_free(render_priv->state.clip_drawing); 219 if (drawing && drawing->glyph)
220 FT_Done_Glyph((FT_Glyph) drawing->glyph);
221 ass_drawing_free(drawing);
220 render_priv->state.clip_drawing = ass_drawing_new( 222 render_priv->state.clip_drawing = ass_drawing_new(
221 render_priv->fontconfig_priv, 223 render_priv->fontconfig_priv,
222 render_priv->state.font, 224 render_priv->state.font,
223 render_priv->settings.hinting,
224 render_priv->ftlibrary); 225 render_priv->ftlibrary);
225 drawing = render_priv->state.clip_drawing; 226 drawing = render_priv->state.clip_drawing;
226 skipopt('('); 227 skipopt('(');
227 res = mystrtoi(&p, &scale); 228 res = mystrtoi(&p, &scale);
228 skipopt(',') 229 skipopt(',')
452 family = malloc(p - start + 1); 453 family = malloc(p - start + 1);
453 strncpy(family, start, p - start); 454 strncpy(family, start, p - start);
454 family[p - start] = '\0'; 455 family[p - start] = '\0';
455 } else 456 } else
456 family = strdup(render_priv->state.style->FontName); 457 family = strdup(render_priv->state.style->FontName);
457 if (render_priv->state.family) 458 free(render_priv->state.family);
458 free(render_priv->state.family);
459 render_priv->state.family = family; 459 render_priv->state.family = family;
460 update_font(render_priv); 460 update_font(render_priv);
461 } else if (mystrcmp(&p, "alpha")) { 461 } else if (mystrcmp(&p, "alpha")) {
462 uint32_t val; 462 uint32_t val;
463 int i; 463 int i;