From f35b0297fa991ed2794500940aa53b69dbdda58f Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 12 May 2017 18:25:07 -0700 Subject: [PATCH] Replace the alignment test by a nice function --- libraries/ktx/src/ktx/KTX.cpp | 7 +++++-- libraries/ktx/src/ktx/KTX.h | 1 + libraries/ktx/src/ktx/Reader.cpp | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libraries/ktx/src/ktx/KTX.cpp b/libraries/ktx/src/ktx/KTX.cpp index ff80695280..b43d015d65 100644 --- a/libraries/ktx/src/ktx/KTX.cpp +++ b/libraries/ktx/src/ktx/KTX.cpp @@ -22,6 +22,9 @@ uint32_t Header::evalPadding(size_t byteSize) { return (uint32_t) (3 - (byteSize + 3) % PACKING_SIZE);// padding ? PACKING_SIZE - padding : 0); } +bool Header::checkAlignment(size_t byteSize) { + return ((byteSize & 0x3) == 0); +} const Header::Identifier ktx::Header::IDENTIFIER {{ 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A @@ -114,7 +117,7 @@ size_t Header::evalFaceSize(uint32_t level) const { } size_t Header::evalImageSize(uint32_t level) const { auto faceSize = evalFaceSize(level); - if ((faceSize < 4) || ((faceSize & 0x3) != 0)) { + if (!checkAlignment(faceSize)) { return 0; } if (numberOfFaces == NUM_CUBEMAPFACES && numberOfArrayElements == 0) { @@ -142,7 +145,7 @@ ImageDescriptors Header::generateImageDescriptors() const { size_t imageOffset = 0; for (uint32_t level = 0; level < numberOfMipmapLevels; ++level) { auto imageSize = static_cast(evalImageSize(level)); - if ((imageSize < 4) || ((imageSize & 0x3) != 0)) { + if (!checkAlignment(imageSize)) { return ImageDescriptors(); } if (imageSize == 0) { diff --git a/libraries/ktx/src/ktx/KTX.h b/libraries/ktx/src/ktx/KTX.h index e8fa019a07..656cf93f34 100644 --- a/libraries/ktx/src/ktx/KTX.h +++ b/libraries/ktx/src/ktx/KTX.h @@ -309,6 +309,7 @@ namespace ktx { static const uint32_t REVERSE_ENDIAN_TEST = 0x01020304; static uint32_t evalPadding(size_t byteSize); + static bool checkAlignment(size_t byteSize); Header(); diff --git a/libraries/ktx/src/ktx/Reader.cpp b/libraries/ktx/src/ktx/Reader.cpp index 49fc8bac70..e69ce53551 100644 --- a/libraries/ktx/src/ktx/Reader.cpp +++ b/libraries/ktx/src/ktx/Reader.cpp @@ -151,7 +151,7 @@ namespace ktx { auto expectedImageSize = header.evalImageSize(images.size()); if (imageSize != expectedImageSize) { break; - } else if ((imageSize < 4) || (imageSize & 0x3)) { + } else if (!Header::checkAlignment(imageSize)) { break; }