avformat/matroskadec: Beautify setting default values

Reviewed-by: Ridley Combs <rcombs@rcombs.me>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
Andreas Rheinhardt 2021-02-16 17:21:14 +01:00
parent 7471f473c5
commit 05ae0b239f
1 changed files with 8 additions and 7 deletions

View File

@ -1114,28 +1114,29 @@ static int ebml_parse_nest(MatroskaDemuxContext *matroska, EbmlSyntax *syntax,
int res;
if (data) {
for (int i = 0; syntax[i].id; i++)
for (int i = 0; syntax[i].id; i++) {
void *dst = (char *)data + syntax[i].data_offset;
switch (syntax[i].type) {
case EBML_UINT:
*(uint64_t *) ((char *) data + syntax[i].data_offset) = syntax[i].def.u;
*(uint64_t *)dst = syntax[i].def.u;
break;
case EBML_SINT:
*(int64_t *) ((char *) data + syntax[i].data_offset) = syntax[i].def.i;
*(int64_t *) dst = syntax[i].def.i;
break;
case EBML_FLOAT:
*(double *) ((char *) data + syntax[i].data_offset) = syntax[i].def.f;
*(double *) dst = syntax[i].def.f;
break;
case EBML_STR:
case EBML_UTF8:
// the default may be NULL
if (syntax[i].def.s) {
uint8_t **dst = (uint8_t **) ((uint8_t *) data + syntax[i].data_offset);
*dst = av_strdup(syntax[i].def.s);
if (!*dst)
*(char**)dst = av_strdup(syntax[i].def.s);
if (!*(char**)dst)
return AVERROR(ENOMEM);
}
break;
}
}
if (!matroska->levels[matroska->num_levels - 1].length) {
matroska->num_levels--;