diff --git a/modules/juce_core/containers/juce_Array.h b/modules/juce_core/containers/juce_Array.h index bb3b733553..1b37c78ef7 100644 --- a/modules/juce_core/containers/juce_Array.h +++ b/modules/juce_core/containers/juce_Array.h @@ -871,10 +871,11 @@ public: auto endIndex = jlimit (0, values.size(), startIndex + numberToRemove); startIndex = jlimit (0, values.size(), startIndex); + numberToRemove = endIndex - startIndex; - if (endIndex > startIndex) + if (numberToRemove > 0) { - values.removeElements (startIndex, endIndex - startIndex); + values.removeElements (startIndex, numberToRemove); minimiseStorageAfterRemoval(); } } diff --git a/modules/juce_core/containers/juce_OwnedArray.h b/modules/juce_core/containers/juce_OwnedArray.h index a5dddf0608..06513e9461 100644 --- a/modules/juce_core/containers/juce_OwnedArray.h +++ b/modules/juce_core/containers/juce_OwnedArray.h @@ -606,7 +606,7 @@ public: startIndex = jlimit (0, values.size(), startIndex); numberToRemove = endIndex - startIndex; - if (endIndex > startIndex) + if (numberToRemove > 0) { if (deleteObjects) { diff --git a/modules/juce_core/containers/juce_ReferenceCountedArray.h b/modules/juce_core/containers/juce_ReferenceCountedArray.h index 3b2a886077..db9eded81a 100644 --- a/modules/juce_core/containers/juce_ReferenceCountedArray.h +++ b/modules/juce_core/containers/juce_ReferenceCountedArray.h @@ -650,12 +650,13 @@ public: int numberToRemove) { const ScopedLockType lock (getLock()); - auto start = jlimit (0, values.size(), startIndex); + startIndex = jlimit (0, values.size(), startIndex); auto endIndex = jlimit (0, values.size(), startIndex + numberToRemove); + numberToRemove = endIndex - startIndex; - if (endIndex > start) + if (numberToRemove > 0) { - for (int i = start; i < endIndex; ++i) + for (int i = startIndex; i < endIndex; ++i) { releaseObject (values[i]); values[i] = nullptr; // (in case one of the destructors accesses this array and hits a dangling pointer)