bytes 0.12.0.1 → 0.13
raw patch · 3 files changed
+21/−16 lines, 3 files
Files
- CHANGELOG.markdown +4/−0
- bytes.cabal +1/−1
- src/Data/Bytes/Serial.hs +16/−15
CHANGELOG.markdown view
@@ -1,3 +1,7 @@+0.13+----+* Fixed an issue caused by [deserializing illegal maps](http://www.reddit.com/r/haskell/comments/1q4r3b/mindbending_behavior_for_deserialization_in/).+ 0.11.5 ------ * Fixed issue #7, permitting the doctests to function against bytestring 0.9
bytes.cabal view
@@ -1,6 +1,6 @@ name: bytes category: Data, Serialization-version: 0.12.0.1+version: 0.13 license: BSD3 cabal-version: >= 1.8 license-file: LICENSE
src/Data/Bytes/Serial.hs view
@@ -310,21 +310,21 @@ instance Serial ISet.IntSet where serialize = serialize . ISet.toAscList- deserialize = ISet.fromDistinctAscList `liftM` deserialize+ deserialize = ISet.fromList `liftM` deserialize instance Serial a => Serial (Seq.Seq a) where serialize = serializeWith serialize deserialize = deserializeWith deserialize -instance Serial a => Serial (Set.Set a) where- serialize = serializeWith serialize- deserialize = deserializeWith deserialize+instance (Serial a, Ord a) => Serial (Set.Set a) where+ serialize = serialize . Set.toAscList+ deserialize = Set.fromList `liftM` deserialize instance Serial v => Serial (IMap.IntMap v) where serialize = serializeWith serialize deserialize = deserializeWith deserialize -instance (Serial k, Serial v) => Serial (Map.Map k v) where+instance (Serial k, Serial v, Ord k) => Serial (Map.Map k v) where serialize = serializeWith serialize deserialize = deserializeWith deserialize @@ -463,19 +463,25 @@ serializeWith pv = serializeWith pv . F.toList deserializeWith gv = Seq.fromList `liftM` deserializeWith gv +{- instance Serial1 Set.Set where serializeWith pv = serializeWith pv . Set.toAscList- deserializeWith gv = Set.fromDistinctAscList `liftM` deserializeWith gv+ deserializeWith gv = Set.fromList `liftM` deserializeWith gv+-} instance Serial1 IMap.IntMap where serializeWith pv = serializeWith (serializeWith2 serialize pv) . IMap.toAscList- deserializeWith gv = IMap.fromDistinctAscList+ deserializeWith gv = IMap.fromList `liftM` deserializeWith (deserializeWith2 deserialize gv) -instance Serial k => Serial1 (Map.Map k) where- serializeWith = serializeWith2 serialize- deserializeWith = deserializeWith2 deserialize+instance (Ord k, Serial k) => Serial1 (Map.Map k) where+ -- serializeWith = serializeWith2 serialize+ -- deserializeWith = deserializeWith2 deserialize+ serializeWith pv = serializeWith (serializeWith2 serialize pv)+ . Map.toAscList+ deserializeWith gv = Map.fromList+ `liftM` deserializeWith (deserializeWith2 deserialize gv) serialize1 :: (MonadPut m, Serial1 f, Serial a) => f a -> m () serialize1 = serializeWith serialize@@ -571,8 +577,3 @@ instance (Serial a, Serial b, Serial c) => Serial2 ((,,,,) a b c) where serializeWith2 f g (a, b, c, d, e) = serialize a >> serialize b >> serialize c >> f d >> g e deserializeWith2 m n = liftM5 (,,,,) deserialize deserialize deserialize m n--instance Serial2 Map.Map where- serializeWith2 pk pv = serializeWith (serializeWith2 pk pv) . Map.toAscList- deserializeWith2 gk gv = Map.fromDistinctAscList- `liftM` deserializeWith (deserializeWith2 gk gv)