diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-02 11:37:07 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-02 11:39:36 +0300 |
| commit | 2427dd3c04c37dd78a54a73da41141b74182590a (patch) | |
| tree | e2024e67ba094566282c05160048ae1f4786f12d /generator/protoc_gen_nim.nim | |
| parent | c4c34c5974ea373288bd29df25ee5fd50325daa2 (diff) | |
| download | nimpb-2427dd3c04c37dd78a54a73da41141b74182590a.tar.gz nimpb-2427dd3c04c37dd78a54a73da41141b74182590a.zip | |
Multiple fixes to reading data from a stream
- littleEndia32/64 arguments were in wrong order in a few places
- add safeReadStr that throws and exception if couldn't read enough data
- throw exceptions when not reading enough data
Diffstat (limited to 'generator/protoc_gen_nim.nim')
| -rw-r--r-- | generator/protoc_gen_nim.nim | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/generator/protoc_gen_nim.nim b/generator/protoc_gen_nim.nim index 22e3cd7..d371859 100644 --- a/generator/protoc_gen_nim.nim +++ b/generator/protoc_gen_nim.nim @@ -638,7 +638,7 @@ iterator genReadMapKVProc(msg: Message): string = if isMessage(value): yield indent("let", 12) yield indent("size = readVarint(stream)", 16) - yield indent("data = readStr(stream, int(size))", 16) + yield indent("data = safeReadStr(stream, int(size))", 16) yield indent("pbs = newProtobufStream(newStringStream(data))", 16) yield indent(&"value = read{value.typeName}(pbs)", 12) else: @@ -677,7 +677,7 @@ iterator genReadMessageProc(msg: Message): string = yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) yield indent("let", 12) yield indent("size = readVarint(stream)", 16) - yield indent("data = readStr(stream, int(size))", 16) + yield indent("data = safeReadStr(stream, int(size))", 16) yield indent("pbs = newProtobufStream(newStringStream(data))", 16) yield indent(&"read{field.typeName}KV(pbs, result.{field.name})", 12) elif isNumeric(field): @@ -698,7 +698,7 @@ iterator genReadMessageProc(msg: Message): string = yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) yield indent("let", 12) yield indent("size = readVarint(stream)", 16) - yield indent("data = readStr(stream, int(size))", 16) + yield indent("data = safeReadStr(stream, int(size))", 16) yield indent("pbs = newProtobufStream(newStringStream(data))", 16) yield indent(&"{setter}(result, {reader}(pbs))", 12) else: @@ -709,7 +709,7 @@ iterator genReadMessageProc(msg: Message): string = if isMessage(field): yield indent("let", 12) yield indent("size = readVarint(stream)", 16) - yield indent("data = readStr(stream, int(size))", 16) + yield indent("data = safeReadStr(stream, int(size))", 16) yield indent("pbs = newProtobufStream(newStringStream(data))", 16) yield indent(&"{setter}(result, {reader}(pbs))", 12) else: |
