diff --git a/preserves.nimble b/preserves.nimble index 06d76bf..d7aa008 100644 --- a/preserves.nimble +++ b/preserves.nimble @@ -1,6 +1,6 @@ # Package -version = "20230823" +version = "20230825" author = "Emery Hemingway" description = "data model and serialization format" license = "Unlicense" diff --git a/src/preserves.nim b/src/preserves.nim index c9b2d2c..27e9cbf 100644 --- a/src/preserves.nim +++ b/src/preserves.nim @@ -631,12 +631,10 @@ proc encode*[E](pr: Preserve[E]): seq[byte] = s.write pr result = cast[seq[byte]](move s.data) + proc decodePreserves*(s: Stream; E = void): Preserve[E] = ## Decode a Preserves value from a binary-encoded stream. - if s.atEnd: raise newException(ValueError, "End of Preserves stream") - proc assertStream(check: bool) = - if not check: - raise newException(ValueError, "invalid Preserves stream") + if s.atEnd: raise newException(IOError, "End of Preserves stream") const endMarker = 0x84 let tag = s.readUint8() case tag @@ -715,7 +713,7 @@ proc decodePreserves*(s: Stream; E = void): Preserve[E] = for _ in 1..len: result.int = (result.int shl 8) + s.readUint8().BiggestInt of endMarker: - assertStream(false) + raise newException(ValueError, "invalid Preserves stream") else: case 0xf0 and tag of 0x90: @@ -731,7 +729,7 @@ proc decodePreserves*(s: Stream; E = void): Preserve[E] = for i in 1..