diff options
author | Colin Gibbs <colin@gibbsonline.net> | 2008-04-14 21:24:20 +0100 |
---|---|---|
committer | Colin Gibbs <colin@gibbsonline.net> | 2008-04-14 21:24:20 +0100 |
commit | 60349ff93d445baa1573d0db536838bb8305a80c (patch) | |
tree | 74911b35364991be3edc8e0fbaeebf0884c9ae52 /src | |
parent | a795b2039b013f4ccfca2de76bd892ac77e49be1 (diff) | |
download | xine-lib-60349ff93d445baa1573d0db536838bb8305a80c.tar.gz xine-lib-60349ff93d445baa1573d0db536838bb8305a80c.tar.bz2 |
divide by zero in demux_qt.c
On some m4a files I get a divide by zero.
bytes_per_packet in this case is zero. I'm not sure what the real problem is
but skipping the assignment in that case works fine.
Diffstat (limited to 'src')
-rw-r--r-- | src/demuxers/demux_qt.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c index 851b0aef5..16a6c7bf2 100644 --- a/src/demuxers/demux_qt.c +++ b/src/demuxers/demux_qt.c @@ -1207,10 +1207,11 @@ static qt_error parse_trak_atom (qt_trak *trak, if (_X_BE_32(&trak_atom[atom_pos + 0x2C])) trak->stsd_atoms[k].audio.bytes_per_sample = _X_BE_32(&trak_atom[atom_pos + 0x2C]); - trak->stsd_atoms[k].audio.samples_per_frame = - (trak->stsd_atoms[k].audio.bytes_per_frame / - trak->stsd_atoms[k].audio.bytes_per_packet) * - trak->stsd_atoms[k].audio.samples_per_packet; + if (trak->stsd_atoms[k].audio.bytes_per_packet) + trak->stsd_atoms[k].audio.samples_per_frame = + (trak->stsd_atoms[k].audio.bytes_per_frame / + trak->stsd_atoms[k].audio.bytes_per_packet) * + trak->stsd_atoms[k].audio.samples_per_packet; } /* see if the trak deserves a promotion to VBR */ |