Fix memory corruption & leaks in Image #240
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.
Image was calling SwapRedBlue unconditionally based on compile-time
values.
That meant that greyscale images would try to swap Red and Blue
channels, but there is only one channel. This resulted in artifacts on
the final image as well as memory corruption as the last pixels would be
swapped against out of bound regions.
Additionally, there were several instances where FIBITMAP handles were
leaking.
Signed-off-by: Matias N. Goldberg [email protected]
🦟 Bug fix
No ticket was issued.
Summary
How to repro: Just load a greyscale 8-bit image and use a tool like valgrind or ASAN to see the corruption.
The memory leaks will be hard to spot though.
It is possible this fix should be backported to older releases
Checklist
codecheck
passed (See contributing)