Replace ImageDecoder::set_limits with ImageDecoder::set_allocation_limit#2709
Open
fintelia wants to merge 2 commits intoimage-rs:mainfrom
Open
Replace ImageDecoder::set_limits with ImageDecoder::set_allocation_limit#2709fintelia wants to merge 2 commits intoimage-rs:mainfrom
ImageDecoder::set_limits with ImageDecoder::set_allocation_limit#2709fintelia wants to merge 2 commits intoimage-rs:mainfrom
Conversation
Member
|
I think we still want a type of sorts around the primitive type, be it just to intentionally get rid of its |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The goal of this PR is to give the
Limitsstruct a single purpose of controlling limits forImageReaderwhile the lower-level API directly expects the caller to check dimensions (and output buffer sizes) so the only remaining limit is memory allocation.This also makes the concept of strict limits (if we add any) clearer. Now the
ImageReaderis responsible for figuring out which limits can be supported and directly returning an error if necessary. No more need for every decoder to check its supported limits against the requested ones.Another inspiration for this PR was the idea from #2708 of having a shared
Arc<AtomicU64>for the allocation limit. In particular, in a followup we could switch things so thatset_allocation_limittook an atomic limit, while having the higher-levelLimitsobject keeps its existing non-atomicmax_allocfield. The interfacing between the two could then be fully encapsulated within theImageReadertype.