BUG: Fix leak of void scalar buffer info #12784
Merged
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.
Backport of #12696.
The void scalar was missing the clearing logic for the buffer info
cache (or storage).
It should maybe be checked whether we can replace all of this logic
when not supporting Python 2 anymore.
This is a followup on gh-12624. After this, the test suit should be clean in the sense of valgrind definitely lost leaks (except for the outstanding gh-12650 and more tricky gh-12633 for f2py) [1]. I think if we drop python 2, there may be a reorganizing happening here anyway. Also I am not sure if Matti's changes touch similar things (but doubt it). There is a similar path for
object
, but I do not think those really exists?![1] Note that there is still a "leak" (detected, but not true) of one or two buffer info's, because the singletons
np.bool_(True)
andnp.bool_(False)
get never cleared, and so their cachedbuffer_info
also does not get cleared.