Commit 44729bc0 authored by Martin Storsjö's avatar Martin Storsjö

matroskaenc: Make sure the seekhead struct is freed even on seek failure

The caller expects the seekhead struct to be freed when calling
matroska_write_seekhead. Currently, the structure is leaked if the
seek fails.
Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
parent 090aaaf7
...@@ -317,9 +317,12 @@ static int64_t mkv_write_seekhead(AVIOContext *pb, mkv_seekhead *seekhead) ...@@ -317,9 +317,12 @@ static int64_t mkv_write_seekhead(AVIOContext *pb, mkv_seekhead *seekhead)
currentpos = avio_tell(pb); currentpos = avio_tell(pb);
if (seekhead->reserved_size > 0) if (seekhead->reserved_size > 0) {
if (avio_seek(pb, seekhead->filepos, SEEK_SET) < 0) if (avio_seek(pb, seekhead->filepos, SEEK_SET) < 0) {
return -1; currentpos = -1;
goto fail;
}
}
metaseek = start_ebml_master(pb, MATROSKA_ID_SEEKHEAD, seekhead->reserved_size); metaseek = start_ebml_master(pb, MATROSKA_ID_SEEKHEAD, seekhead->reserved_size);
for (i = 0; i < seekhead->num_entries; i++) { for (i = 0; i < seekhead->num_entries; i++) {
...@@ -343,6 +346,7 @@ static int64_t mkv_write_seekhead(AVIOContext *pb, mkv_seekhead *seekhead) ...@@ -343,6 +346,7 @@ static int64_t mkv_write_seekhead(AVIOContext *pb, mkv_seekhead *seekhead)
currentpos = seekhead->filepos; currentpos = seekhead->filepos;
} }
fail:
av_free(seekhead->entries); av_free(seekhead->entries);
av_free(seekhead); av_free(seekhead);
......
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