Browse Source

Reservoir: Fix bug where incorrect buffer region could be read in some cases

v6.1.6
reuk 4 years ago
parent
commit
d5e9793cb1
No known key found for this signature in database GPG Key ID: 9ADCD339CFC98A11
1 changed files with 8 additions and 8 deletions
  1. +8
    -8
      modules/juce_core/memory/juce_Reservoir.h

+ 8
- 8
modules/juce_core/memory/juce_Reservoir.h View File

@@ -74,9 +74,15 @@ struct Reservoir
{ {
while (! rangeToRead.isEmpty()) while (! rangeToRead.isEmpty())
{ {
const auto rangeToReadInBuffer = rangeToRead.getIntersectionWith (getBufferedRange());
const auto bufferedRange = getBufferedRange();
if (rangeToReadInBuffer.isEmpty())
if (bufferedRange.contains (rangeToRead.getStart()))
{
const auto rangeToReadInBuffer = rangeToRead.getIntersectionWith (getBufferedRange());
readFromReservoir (rangeToReadInBuffer);
rangeToRead.setStart (rangeToReadInBuffer.getEnd());
}
else
{ {
fillReservoir (rangeToRead.getStart()); fillReservoir (rangeToRead.getStart());
@@ -85,12 +91,6 @@ struct Reservoir
if (newRange.isEmpty() || ! newRange.contains (rangeToRead.getStart())) if (newRange.isEmpty() || ! newRange.contains (rangeToRead.getStart()))
break; break;
} }
else
{
readFromReservoir (rangeToReadInBuffer);
rangeToRead.setStart (rangeToReadInBuffer.getEnd());
}
} }
return rangeToRead; return rangeToRead;


Loading…
Cancel
Save