juce_core: Fix infinite allocation loop in AllocationHooks #1357
+6
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
AllocationHooks
has aListenerList
member variable which was recently updated to allocate on instantiation of its internal listeners list:const SharedListeners listeners = std::make_shared<ArrayType>();
Call to
std::make_shared
allocates which results in an infinite loop:operator new
is called which attempts to access the staticAllocationHooks
object which does not yet exist - so the constructor gets called again, which then callsoperator new
again, and so round and round it goes - which unfortunately renders that feature unusable at the moment.As nice as maintaining a unified approach to handling listeners would be, I don't think there's much need to support multiple listeners as
AllocationHooks
primary reason for existence isUnitTestAllocationChecker
so I've simplified it to handle a singleListener
only.