Merge pull request #11 from status-im/protobuf-bugfix

Bugfix: Protobuf length prefix was assumed to be 1 byte
This commit is contained in:
Eugene Kabanov 2019-03-05 01:43:55 +02:00 committed by GitHub
commit 582e52fc5c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 3 deletions

View File

@ -176,12 +176,12 @@ proc write*(pb: var ProtoBuffer, field: ProtoField) =
proc finish*(pb: var ProtoBuffer) = proc finish*(pb: var ProtoBuffer) =
## Prepare protobuf's buffer ``pb`` for writing to stream. ## Prepare protobuf's buffer ``pb`` for writing to stream.
var length = 0
assert(len(pb.buffer) > 0) assert(len(pb.buffer) > 0)
if WithVarintLength in pb.options: if WithVarintLength in pb.options:
let size = uint(len(pb.buffer) - 10) let size = uint(len(pb.buffer) - 10)
let pos = 10 - vsizeof(length) let pos = 10 - vsizeof(size)
let res = PB.putUVarint(pb.buffer.toOpenArray(pos, 9), length, size) var usedBytes = 0
let res = PB.putUVarint(pb.buffer.toOpenArray(pos, 9), usedBytes, size)
assert(res == VarintStatus.Success) assert(res == VarintStatus.Success)
pb.offset = pos pb.offset = pos
else: else: