libtags: m4a: do not div by zero
This commit is contained in:
parent
cb4d441cb8
commit
5ddff68167
1 changed files with 5 additions and 2 deletions
|
@ -8,6 +8,7 @@ int
|
||||||
tagm4a(Tagctx *ctx)
|
tagm4a(Tagctx *ctx)
|
||||||
{
|
{
|
||||||
uvlong duration;
|
uvlong duration;
|
||||||
|
uint x;
|
||||||
uchar *d;
|
uchar *d;
|
||||||
int sz, type, dtype, i, skip, n;
|
int sz, type, dtype, i, skip, n;
|
||||||
|
|
||||||
|
@ -101,12 +102,14 @@ tagm4a(Tagctx *ctx)
|
||||||
if(ctx->read(ctx, d, 16) != 16)
|
if(ctx->read(ctx, d, 16) != 16)
|
||||||
return -1;
|
return -1;
|
||||||
sz -= 16;
|
sz -= 16;
|
||||||
duration = beuint(&d[12]) / beuint(&d[8]);
|
if((x = beuint(&d[8])) > 0)
|
||||||
|
duration = beuint(&d[12]) / x;
|
||||||
}else if(d[1] == 1){ /* version 1 */
|
}else if(d[1] == 1){ /* version 1 */
|
||||||
if(ctx->read(ctx, d, 28) != 28)
|
if(ctx->read(ctx, d, 28) != 28)
|
||||||
return -1;
|
return -1;
|
||||||
sz -= 28;
|
sz -= 28;
|
||||||
duration = ((uvlong)beuint(&d[20])<<32 | beuint(&d[24])) / (uvlong)beuint(&d[16]);
|
if((x = beuint(&d[16])) > 0)
|
||||||
|
duration = ((uvlong)beuint(&d[20])<<32 | beuint(&d[24])) / (uvlong)x;
|
||||||
}
|
}
|
||||||
ctx->duration = duration * 1000;
|
ctx->duration = duration * 1000;
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in a new issue