diff options
-rw-r--r-- | demux/demux.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/demux/demux.c b/demux/demux.c index aa9e9c3b34..cb3d3a5efe 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -1294,20 +1294,14 @@ void demuxer_sort_chapters(demuxer_t *demuxer) int demuxer_add_chapter(demuxer_t *demuxer, struct bstr name, uint64_t start, uint64_t end) { - if (!(demuxer->num_chapters % 32)) - demuxer->chapters = talloc_realloc(demuxer, demuxer->chapters, - struct demux_chapter, - demuxer->num_chapters + 32); - - demuxer->chapters[demuxer->num_chapters].original_index = - demuxer->num_chapters; - demuxer->chapters[demuxer->num_chapters].start = start; - demuxer->chapters[demuxer->num_chapters].end = end; - demuxer->chapters[demuxer->num_chapters].name = name.len ? - talloc_strndup(demuxer->chapters, name.start, name.len) : - talloc_strdup(demuxer->chapters, mp_gtext("unknown")); - - demuxer->num_chapters++; + struct demux_chapter new = { + .original_index = demuxer->num_chapters, + .start = start, + .end = end, + .name = name.len ? bstrdup0(demuxer, name) + : talloc_strdup(demuxer, mp_gtext("unknown")), + }; + MP_TARRAY_APPEND(demuxer, demuxer->chapters, demuxer->num_chapters, new); return 0; } |