Only byte-swap 16-bit PNGs on little-endian (#7792)#7796
Merged
mdboom merged 1 commit intomatplotlib:masterfrom Jan 11, 2017
Merged
Only byte-swap 16-bit PNGs on little-endian (#7792)#7796mdboom merged 1 commit intomatplotlib:masterfrom
mdboom merged 1 commit intomatplotlib:masterfrom
Conversation
_png has some code that unconditionally byte-swaps 16-bit PNG data (which is, per the spec, stored in big-endian order). This isn't appropriate on a big-endian platform, though: this swap being done unconditionally breaks the handling of 16-bit PNGs on big-endian platforms (e.g. Fedora ppc64) (matplotlib#7792). So, let's use some macros numpy kindly defines for us to decide whether to do this swap or not.
7825b5a to
e96a2ca
Compare
tacaswell
approved these changes
Jan 11, 2017
Contributor
Author
|
Oh, in case you wondered, we don't have to check if |
Current coverage is 62.11% (diff: 100%)@@ master #7796 diff @@
==========================================
Files 174 174
Lines 56028 56028
Methods 0 0
Messages 0 0
Branches 0 0
==========================================
- Hits 34805 34803 -2
- Misses 21223 21225 +2
Partials 0 0
|
Member
|
👍 from me. |
Member
|
Backported to v2.x as 26567b3 |
mdboom
added a commit
that referenced
this pull request
Jan 11, 2017
Only byte-swap 16-bit PNGs on little-endian (#7792)
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.
_png has some code that unconditionally byte-swaps 16-bit PNG
data (which is, per the spec, stored in big-endian order). This
isn't appropriate on a big-endian platform, though: this swap
being done unconditionally breaks the handling of 16-bit PNGs
on big-endian platforms (e.g. Fedora ppc64) (#7792). So, let's
use some macros numpy kindly defines for us to decide whether to
do this swap or not.
@QuLogic suggested using
PyArray_EquivByteorders, but for some reason I kinda preferred using the underlying macros. If you would prefer doing it withPyArray_EquivByteorders(NPY_LITTLE, NPY_NATIVE)or so, I can do that, just ask. This gets the failure count for a Fedora ppc64 build down to 14 (and I checked it doesn't break x86_64).