summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/matroskaenc.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 10b64e2965..e9b2be3d42 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -1916,7 +1916,8 @@ static int mkv_write_header(AVFormatContext *s)
if (mkv->reserve_cues_space == 1)
mkv->reserve_cues_space++;
put_ebml_void(pb, mkv->reserve_cues_space);
- }
+ } else
+ mkv->reserve_cues_space = -1;
}
av_init_packet(&mkv->cur_audio_pkt);
@@ -2457,7 +2458,7 @@ static int mkv_write_trailer(AVFormatContext *s)
MatroskaMuxContext *mkv = s->priv_data;
AVIOContext *pb = s->pb;
int64_t endpos, ret64;
- int ret;
+ int ret, ret2 = 0;
// check if we have an audio packet cached
if (mkv->cur_audio_pkt.size > 0) {
@@ -2485,7 +2486,7 @@ static int mkv_write_trailer(AVFormatContext *s)
endpos = avio_tell(pb);
- if (mkv->cues.num_entries) {
+ if (mkv->cues.num_entries && mkv->reserve_cues_space >= 0) {
AVIOContext *cues = NULL;
uint64_t size;
int length_size = 0;
@@ -2510,7 +2511,7 @@ static int mkv_write_trailer(AVFormatContext *s)
"Insufficient space reserved for Cues: "
"%d < %"PRIu64". No Cues will be output.\n",
mkv->reserve_cues_space, size);
- mkv->reserve_cues_space = -1;
+ ret2 = AVERROR(EINVAL);
ffio_free_dyn_buf(&cues);
goto after_cues;
} else {
@@ -2600,7 +2601,7 @@ static int mkv_write_trailer(AVFormatContext *s)
end_ebml_master(pb, mkv->segment);
- return mkv->reserve_cues_space < 0 ? AVERROR(EINVAL) : 0;
+ return ret2;
}
static int mkv_query_codec(enum AVCodecID codec_id, int std_compliance)