summaryrefslogtreecommitdiff
path: root/libs/ardour/audioregion.cc
diff options
context:
space:
mode:
authorfeandin <feandin@gmail.com>2016-03-04 20:07:15 +0100
committerRobin Gareus <robin@gareus.org>2016-03-05 15:54:47 +0100
commitbf83093f43ac13bcadece6e451055d50c59e7787 (patch)
tree144b712ae869200c85c2b6367774ca5c22a42f6c /libs/ardour/audioregion.cc
parent3a3afe7cfca0b3f2f5e4b3e6f67228e69022962e (diff)
Fix issue #0006806
Diffstat (limited to 'libs/ardour/audioregion.cc')
-rw-r--r--libs/ardour/audioregion.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc
index ddd152bf0e..6b549b3d13 100644
--- a/libs/ardour/audioregion.cc
+++ b/libs/ardour/audioregion.cc
@@ -1817,11 +1817,13 @@ AudioRegion::find_silence (Sample threshold, framecnt_t min_length, framecnt_t f
while (pos < end && !itt.cancel) {
framecnt_t cur_samples = 0;
+ framecnt_t const to_read = min (end - pos, block_size);
/* fill `loudest' with the loudest absolute sample at each instant, across all channels */
memset (loudest.get(), 0, sizeof (Sample) * block_size);
+
for (uint32_t n = 0; n < n_channels(); ++n) {
- cur_samples = read_raw_internal (buf.get(), pos, block_size, n);
+ cur_samples = read_raw_internal (buf.get(), pos, to_read, n);
for (framecnt_t i = 0; i < cur_samples; ++i) {
loudest[i] = max (loudest[i], abs (buf[i]));
}