flatbuffers-parser 0.1.0.0 → 0.1.0.1
raw patch · 2 files changed
+7/−3 lines, 2 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Flatbuffers.Parser: ArrayOfStructOffsetAlignmentError :: Error
Files
flatbuffers-parser.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.4 name: flatbuffers-parser-version: 0.1.0.0+version: 0.1.0.1 synopsis: Parse flatbuffers license: BSD-3-Clause license-file: LICENSE
src/Flatbuffers/Parser.hs view
@@ -104,6 +104,7 @@ | ArrayOfStructOffsetOutOfBounds | ArrayOfStructPayloadOutOfBounds !Int !Int !Int | ArrayOffsetAlignmentError+ | ArrayOfStructOffsetAlignmentError | FieldArrayAlignmentError | ExpectedWord8EqButGot !Word8 !Word8 | ExpectedWord16EqButGot !Word16 !Word16@@ -386,11 +387,14 @@ when (rem effectiveOffset 4 /= 0) (Left FieldArrayAlignmentError) let !(arrayOffset :: Word32) = LE.indexByteArray content (quot effectiveOffset 4) let !effectiveArrayOffset = (fromIntegral @Word32 @Int arrayOffset) + effectiveOffset- when (rem effectiveArrayOffset 4 /= 0) (Left ArrayOffsetAlignmentError)- when (rem (effectiveArrayOffset + 4) alignment /= 0) (Left ArrayOffsetAlignmentError)+ when (rem effectiveArrayOffset 4 /= 0) (Left ArrayOfStructOffsetAlignmentError) when (effectiveArrayOffset + 4 > end) (Left ArrayOfStructOffsetOutOfBounds) let !(arrayLength :: Word32) = LE.indexByteArray content (quot effectiveArrayOffset 4) let arrayLengthI = fromIntegral @Word32 @Int arrayLength+ -- We do not check the alignment of the start element when the length+ -- is zero because there is no start element.+ when (arrayLengthI > 0) $ do+ when (rem (effectiveArrayOffset + 4) alignment /= 0) (Left ArrayOfStructOffsetAlignmentError) let !payloadSz = arrayLengthI * sz when (effectiveArrayOffset + 4 + payloadSz > end) (Left (ArrayOfStructPayloadOutOfBounds effectiveArrayOffset payloadSz end)) let !(ByteArray arr) = runST $ do