Fix assertion failure in AudioBuffers::copy_from() (#1909)
[dcpomatic.git] / src / lib / writer.cc
index 9ebdd92a3e3b2e25f6c06c1e840b81e19652a2a9..ad588f0a62aa0ff0709168c89c304666ec0867fe 100644 (file)
@@ -306,11 +306,14 @@ Writer::write (shared_ptr<const AudioBuffers> audio, DCPTime const time)
                                end - _audio_reel->period().to
                        };
 
+                       /* Be careful that part_lengths[0] + part_lengths[1] can't be bigger than audio->frames() */
                        Frame part_frames[2] = {
                                part_lengths[0].frames_ceil(afr),
-                               part_lengths[1].frames_ceil(afr)
+                               part_lengths[1].frames_floor(afr)
                        };
 
+                       DCPOMATIC_ASSERT ((part_frames[0] + part_frames[1]) <= audio->frames());
+
                        if (part_frames[0]) {
                                shared_ptr<AudioBuffers> part (new AudioBuffers(audio, part_frames[0], 0));
                                _audio_reel->write (part);