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

View File

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