diff options
author | Arne Döring <arne.doering@gmx.net> | 2019-11-04 13:06:08 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-11-04 13:06:08 +0100 |
commit | 992f0a775635e4d4e1c9b4800a676a693695d88c (patch) | |
tree | 7928def5ec183ccf1fe00a0c2733cc9ae35b353b /lib | |
parent | 62fc3db9d76658066dd999db63606762993ffeac (diff) | |
download | Nim-992f0a775635e4d4e1c9b4800a676a693695d88c.tar.gz |
fix conversions to uint in varints.nim (#12564)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/std/varints.nim | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/lib/std/varints.nim b/lib/std/varints.nim index 4d0ff3c2c..fe06b478a 100644 --- a/lib/std/varints.nim +++ b/lib/std/varints.nim @@ -49,57 +49,57 @@ proc readVu64*(z: openArray[byte]; pResult: var uint64): int = return 9 proc varintWrite32(z: var openArray[byte]; y: uint32) = - z[0] = uint8(y shr 24) - z[1] = uint8(y shr 16) - z[2] = uint8(y shr 8) - z[3] = uint8(y) + z[0] = cast[uint8](y shr 24) + z[1] = cast[uint8](y shr 16) + z[2] = cast[uint8](y shr 8) + z[3] = cast[uint8](y) proc writeVu64*(z: var openArray[byte], x: uint64): int = ## Write a varint into z. The buffer z must be at least 9 characters ## long to accommodate the largest possible varint. Returns the number of ## bytes used. if x <= 240: - z[0] = uint8 x + z[0] = cast[uint8](x) return 1 if x <= 2287: - let y = uint32(x - 240) - z[0] = uint8(y shr 8 + 241) - z[1] = uint8(y and 255) + let y = cast[uint32](x - 240) + z[0] = cast[uint8](y shr 8 + 241) + z[1] = cast[uint8](y and 255) return 2 if x <= 67823: - let y = uint32(x - 2288) + let y = cast[uint32](x - 2288) z[0] = 249 - z[1] = uint8(y shr 8) - z[2] = uint8(y and 255) + z[1] = cast[uint8](y shr 8) + z[2] = cast[uint8](y and 255) return 3 - let y = uint32 x - let w = uint32(x shr 32) + let y = cast[uint32](x) + let w = cast[uint32](x shr 32) if w == 0: if y <= 16777215: z[0] = 250 - z[1] = uint8(y shr 16) - z[2] = uint8(y shr 8) - z[3] = uint8(y) + z[1] = cast[uint8](y shr 16) + z[2] = cast[uint8](y shr 8) + z[3] = cast[uint8](y) return 4 z[0] = 251 varintWrite32(toOpenArray(z, 1, z.high-1), y) return 5 if w <= 255: z[0] = 252 - z[1] = uint8 w + z[1] = cast[uint8](w) varintWrite32(toOpenArray(z, 2, z.high-2), y) return 6 if w <= 65535: z[0] = 253 - z[1] = uint8(w shr 8) - z[2] = uint8 w + z[1] = cast[uint8](w shr 8) + z[2] = cast[uint8](w) varintWrite32(toOpenArray(z, 3, z.high-3), y) return 7 if w <= 16777215: z[0] = 254 - z[1] = uint8(w shr 16) - z[2] = uint8(w shr 8) - z[3] = uint8 w + z[1] = cast[uint8](w shr 16) + z[2] = cast[uint8](w shr 8) + z[3] = cast[uint8](w) varintWrite32(toOpenArray(z, 4, z.high-4), y) return 8 z[0] = 255 |