Commit 0f0a8d98 authored by Marton Balint's avatar Marton Balint

ass: fix error handling in ff_ass_add_subrect

Signed-off-by: 's avatarMarton Balint <cus@passwd.hu>
parent f148954b
...@@ -123,21 +123,28 @@ int ff_ass_add_rect(AVSubtitle *sub, const char *dialog, ...@@ -123,21 +123,28 @@ int ff_ass_add_rect(AVSubtitle *sub, const char *dialog,
AVSubtitleRect **rects; AVSubtitleRect **rects;
av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED); av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED);
if ((dlen = ff_ass_bprint_dialog(&buf, dialog, ts_start, duration, raw)) < 0) if ((ret = ff_ass_bprint_dialog(&buf, dialog, ts_start, duration, raw)) < 0)
return dlen; goto err;
dlen = ret;
if (!av_bprint_is_complete(&buf)) if (!av_bprint_is_complete(&buf))
return AVERROR(ENOMEM); goto errnomem;
rects = av_realloc(sub->rects, (sub->num_rects+1) * sizeof(*sub->rects)); rects = av_realloc(sub->rects, (sub->num_rects+1) * sizeof(*sub->rects));
if (!rects) if (!rects)
return AVERROR(ENOMEM); goto errnomem;
sub->rects = rects; sub->rects = rects;
sub->end_display_time = FFMAX(sub->end_display_time, 10 * duration); sub->end_display_time = FFMAX(sub->end_display_time, 10 * duration);
rects[sub->num_rects] = av_mallocz(sizeof(*rects[0])); rects[sub->num_rects] = av_mallocz(sizeof(*rects[0]));
rects[sub->num_rects]->type = SUBTITLE_ASS; rects[sub->num_rects]->type = SUBTITLE_ASS;
ret = av_bprint_finalize(&buf, &rects[sub->num_rects]->ass); ret = av_bprint_finalize(&buf, &rects[sub->num_rects]->ass);
if (ret < 0) if (ret < 0)
return ret; goto err;
sub->num_rects++; sub->num_rects++;
return dlen; return dlen;
errnomem:
ret = AVERROR(ENOMEM);
err:
av_bprint_finalize(&buf, NULL);
return ret;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment