memory 0.6 → 0.7
raw patch · 4 files changed
+30/−24 lines, 4 files
Files
- CHANGELOG.md +7/−1
- Data/Memory/Internal/Scrubber.hs +20/−20
- memory.cabal +1/−1
- tests/Tests.hs +2/−2
CHANGELOG.md view
@@ -1,6 +1,12 @@+## 0.7++* Fix fixed sized scrubber written too hastily, that would zero out memory, as the index+ was written through byte size, whereas the primitive would consider it as WordX type index.+ it would helps if Ghc.Prim had better documentation.+ ## 0.6 -* fix compilation on architecture where endianness is not a compile time define related+* Fix compilation on architecture where endianness is not a compile time define related to their cabal arch(). ## 0.5
Data/Memory/Internal/Scrubber.hs view
@@ -30,35 +30,35 @@ #if WORD_SIZE_IN_BITS == 64 scrub8 a = IO $ \s -> (# writeWord64OffAddr# a 0# 0## s, () #) scrub16 a = IO $ \s1 ->- let !s2 = writeWord64OffAddr# a 0# 0## s1- !s3 = writeWord64OffAddr# a 8# 0## s2+ let !s2 = writeWord64OffAddr# a 0# 0## s1+ !s3 = writeWord64OffAddr# a 1# 0## s2 in (# s3, () #) scrub32 a = IO $ \s1 ->- let !s2 = writeWord64OffAddr# a 0# 0## s1- !s3 = writeWord64OffAddr# a 8# 0## s2- !s4 = writeWord64OffAddr# a 16# 0## s3- !s5 = writeWord64OffAddr# a 24# 0## s4+ let !s2 = writeWord64OffAddr# a 0# 0## s1+ !s3 = writeWord64OffAddr# a 1# 0## s2+ !s4 = writeWord64OffAddr# a 2# 0## s3+ !s5 = writeWord64OffAddr# a 3# 0## s4 in (# s5, () #) #else scrub8 a = IO $ \s1 ->- let !s2 = writeWord32OffAddr# a 0# 0## s1- !s3 = writeWord32OffAddr# a 4# 0## s2+ let !s2 = writeWord32OffAddr# a 0# 0## s1+ !s3 = writeWord32OffAddr# a 1# 0## s2 in (# s3, () #) scrub16 a = IO $ \s1 ->- let !s2 = writeWord32OffAddr# a 0# 0## s1- !s3 = writeWord32OffAddr# a 4# 0## s2- !s4 = writeWord32OffAddr# a 8# 0## s3- !s5 = writeWord32OffAddr# a 12# 0## s4+ let !s2 = writeWord32OffAddr# a 0# 0## s1+ !s3 = writeWord32OffAddr# a 1# 0## s2+ !s4 = writeWord32OffAddr# a 2# 0## s3+ !s5 = writeWord32OffAddr# a 3# 0## s4 in (# s5, () #) scrub32 a = IO $ \s1 ->- let !s2 = writeWord32OffAddr# a 0# 0## s1- !s3 = writeWord32OffAddr# a 4# 0## s2- !s4 = writeWord32OffAddr# a 8# 0## s3- !s5 = writeWord32OffAddr# a 12# 0## s4- !s6 = writeWord32OffAddr# a 16# 0## s5- !s7 = writeWord32OffAddr# a 20# 0## s6- !s8 = writeWord32OffAddr# a 24# 0## s7- !s9 = writeWord32OffAddr# a 28# 0## s8+ let !s2 = writeWord32OffAddr# a 0# 0## s1+ !s3 = writeWord32OffAddr# a 1# 0## s2+ !s4 = writeWord32OffAddr# a 2# 0## s3+ !s5 = writeWord32OffAddr# a 3# 0## s4+ !s6 = writeWord32OffAddr# a 4# 0## s5+ !s7 = writeWord32OffAddr# a 5# 0## s6+ !s8 = writeWord32OffAddr# a 6# 0## s7+ !s9 = writeWord32OffAddr# a 7# 0## s8 in (# s9, () #) #endif
memory.cabal view
@@ -1,5 +1,5 @@ Name: memory-Version: 0.6+Version: 0.7 Synopsis: memory and related abtraction stuff Description: Chunk of memory, polymorphic byte array management and manipulation
tests/Tests.hs view
@@ -122,7 +122,7 @@ ] main = defaultMain $ testGroup "memory"- [ localOption (QuickCheckTests 500) $ testGroupBackends "basic" basicProperties+ [ localOption (QuickCheckTests 5000) $ testGroupBackends "basic" basicProperties , testGroupBackends "encoding" encodingTests , testGroupBackends "parsing" parsingTests , testGroupBackends "hashing" $ \witnessID ->@@ -133,7 +133,7 @@ basicProperties witnessID = [ testProperty "unpack . pack == id" $ \(Words8 l) -> l == (B.unpack . witnessID . B.pack $ l) , testProperty "self-eq" $ \(Words8 l) -> let b = witnessID . B.pack $ l in b == b- , testProperty "empty-eq" $ \(Words8 l) ->+ , testProperty "add-empty-eq" $ \(Words8 l) -> let b = witnessID $ B.pack l in B.append b B.empty == b , testProperty "zero" $ \(Positive n) ->