diff options
| -rw-r--r-- | generator/protoc_gen_nim.nim | 2 | ||||
| -rw-r--r-- | src/protobuf/stream.nim | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/generator/protoc_gen_nim.nim b/generator/protoc_gen_nim.nim index 227005e..a05172a 100644 --- a/generator/protoc_gen_nim.nim +++ b/generator/protoc_gen_nim.nim @@ -661,6 +661,8 @@ iterator genReadMessageProc(msg: Message): string = yield indent("tag = readTag(stream)", 12) yield indent("wireType = getTagWireType(tag)", 12) yield indent("case getTagFieldNumber(tag)", 8) + yield indent("of 0:", 8) + yield indent("raise newException(InvalidFieldNumberError, \"Invalid field number: 0\")", 12) for field in msg.fields: let reader = &"read{field.typeName}" diff --git a/src/protobuf/stream.nim b/src/protobuf/stream.nim index 6f3b503..a0b650d 100644 --- a/src/protobuf/stream.nim +++ b/src/protobuf/stream.nim @@ -18,6 +18,10 @@ type Tag* = distinct uint32 + ParseError* = object of Exception + + InvalidFieldNumberError* = object of ParseError + proc pbClose(s: Stream) = close(ProtobufStream(s).stream) ProtobufStream(s).stream = nil |
