From 172c58020018cc65ba98d6430420f65064a79a56 Mon Sep 17 00:00:00 2001 From: jules Date: Thu, 7 Jun 2018 17:23:16 +0100 Subject: [PATCH] Added an assertion in Array::removeLast --- modules/juce_core/containers/juce_Array.h | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/modules/juce_core/containers/juce_Array.h b/modules/juce_core/containers/juce_Array.h index 12df635ccd..95413afb83 100644 --- a/modules/juce_core/containers/juce_Array.h +++ b/modules/juce_core/containers/juce_Array.h @@ -981,7 +981,7 @@ public: @see remove, removeRange, removeAllInstancesOf */ template - int removeIf (PredicateType predicate) + int removeIf (PredicateType&& predicate) { int numRemoved = 0; const ScopedLockType lock (getLock()); @@ -1040,17 +1040,22 @@ public: @see remove, removeFirstMatchingValue, removeAllInstancesOf, removeRange */ void removeLast (int howManyToRemove = 1) - { - const ScopedLockType lock (getLock()); + { + jassert (howManyToRemove >= 0); + + if (howManyToRemove > 0) + { + const ScopedLockType lock (getLock()); - if (howManyToRemove > numUsed) - howManyToRemove = numUsed; + if (howManyToRemove > numUsed) + howManyToRemove = numUsed; - for (int i = 1; i <= howManyToRemove; ++i) - data.elements[numUsed - i].~ElementType(); + for (int i = 1; i <= howManyToRemove; ++i) + data.elements[numUsed - i].~ElementType(); - numUsed -= howManyToRemove; - minimiseStorageAfterRemoval(); + numUsed -= howManyToRemove; + minimiseStorageAfterRemoval(); + } } /** Removes any elements which are also in another array.