diff options
author | Grigori Goronzy <greg@kinoho.net> | 2015-06-08 22:39:08 +0200 |
---|---|---|
committer | Grigori Goronzy <greg@kinoho.net> | 2015-06-08 22:39:08 +0200 |
commit | e0bde0b0625f2d398489d9e2f6b9578c11b8c6fb (patch) | |
tree | 4c164ce2f3f18af8655909cfc42c54f8136fe11e | |
parent | da32da6fbc5b11effaa716aab0a1aacda8a1fe05 (diff) | |
parent | b1680ade5f3aec40562830cdb40156aa34536fdb (diff) | |
download | libass-e0bde0b0625f2d398489d9e2f6b9578c11b8c6fb.tar.bz2 libass-e0bde0b0625f2d398489d9e2f6b9578c11b8c6fb.tar.xz |
Merge pull request #181 from grigorig/clang-static-analysis
Fix some issues reported by clang scan-build
-rw-r--r-- | libass/ass.c | 4 | ||||
-rw-r--r-- | libass/ass_render.c | 12 |
2 files changed, 7 insertions, 9 deletions
diff --git a/libass/ass.c b/libass/ass.c index c9855ea..69dec8d 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -1018,7 +1018,6 @@ static char *sub_recode(ASS_Library *library, char *data, size_t size, out: if (icdsc != (iconv_t) (-1)) { (void) iconv_close(icdsc); - icdsc = (iconv_t) (-1); ass_msg(library, MSGL_V, "Closed iconv descriptor"); } @@ -1229,12 +1228,13 @@ int ass_read_styles(ASS_Track *track, char *fname, char *codepage) buf = tmpbuf; } if (!buf) - return 0; + return 1; #endif old_state = track->parser_priv->state; track->parser_priv->state = PST_STYLES; process_text(track, buf); + free(buf); track->parser_priv->state = old_state; return 0; diff --git a/libass/ass_render.c b/libass/ass_render.c index c49dd5c..0dc6fb4 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -1559,7 +1559,7 @@ static void wrap_lines_smart(ASS_Renderer *render_priv, double max_text_width) { int i; - GlyphInfo *cur, *s1, *e1, *s2, *s3, *w; + GlyphInfo *cur, *s1, *e1, *s2, *s3; int last_space; int break_type; int exit; @@ -1611,7 +1611,6 @@ wrap_lines_smart(ASS_Renderer *render_priv, double max_text_width) text_info->glyphs[lead].linebreak = break_type; last_space = -1; s1 = text_info->glyphs + lead; - s_offset = d6_to_double(s1->bbox.xMin + s1->pos.x); text_info->n_lines++; } } @@ -1620,7 +1619,7 @@ wrap_lines_smart(ASS_Renderer *render_priv, double max_text_width) exit = 0; while (!exit && render_priv->state.wrap_style != 1) { exit = 1; - w = s3 = text_info->glyphs; + s3 = text_info->glyphs; s1 = s2 = 0; for (i = 0; i <= text_info->length; ++i) { cur = text_info->glyphs + i; @@ -1630,8 +1629,8 @@ wrap_lines_smart(ASS_Renderer *render_priv, double max_text_width) s3 = cur; if (s1 && (s2->linebreak == 1)) { // have at least 2 lines, and linebreak is 'soft' double l1, l2, l1_new, l2_new; + GlyphInfo *w = s2; - w = s2; do { --w; } while ((w > s1) && (w->symbol == ' ')); @@ -1674,8 +1673,6 @@ wrap_lines_smart(ASS_Renderer *render_priv, double max_text_width) measure_text(render_priv); trim_whitespace(render_priv); - pen_shift_x = 0.; - pen_shift_y = 0.; cur_line = 1; run_offset = 0; @@ -1684,6 +1681,7 @@ wrap_lines_smart(ASS_Renderer *render_priv, double max_text_width) while (i < text_info->length && cur->skip) cur = text_info->glyphs + ++i; pen_shift_x = d6_to_double(-cur->pos.x); + pen_shift_y = 0.; for (i = 0; i < text_info->length; ++i) { cur = text_info->glyphs + i; @@ -2275,7 +2273,7 @@ static void render_and_combine_glyphs(ASS_Renderer *render_priv, } last_info = info; - if (!info->image) + if (!info->image || !current_info) continue; if (current_info->bitmap_count >= current_info->max_bitmap_count) { |