summaryrefslogtreecommitdiffstats
path: root/demux/demux.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-04-12 13:38:20 +0200
committerwm4 <wm4@nowhere>2013-04-12 14:38:22 +0200
commit203b57d863feeed94bfe9ce801266f70751e0622 (patch)
treec359e63c13cea5608278d38d2d344675fe1d54a4 /demux/demux.c
parent6f28c061b4a87b2dbd9d0c5553b7b5f6a83b9c3e (diff)
downloadmpv-203b57d863feeed94bfe9ce801266f70751e0622.tar.bz2
mpv-203b57d863feeed94bfe9ce801266f70751e0622.tar.xz
demux: simplify chapter appending code
This pre-allocation looked tricky and awkward. Use MP_TARRAY_APPEND(), which makes the code simpler. This even keeps the pre-allocation.
Diffstat (limited to 'demux/demux.c')
-rw-r--r--demux/demux.c22
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;
}