Obtain a fresh span after flushing

This commit is contained in:
Zahary Karadjov 2022-01-22 13:00:50 +02:00
commit 1eef0ec19c
No known key found for this signature in database
GPG key ID: C8936F8A3073D609

View file

@ -132,8 +132,11 @@ template flushImpl(s: OutputStream, awaiter, writeOp, flushOp: untyped) =
fsAssert s.extCursorsCount == 0 fsAssert s.extCursorsCount == 0
if s.vtable != nil: if s.vtable != nil:
if s.buffers != nil: if s.buffers != nil:
let runway = s.span.len
trackWrittenTo(s.buffers, s.span.startAddr) trackWrittenTo(s.buffers, s.span.startAddr)
awaiter s.vtable.writeOp(s, nil, 0) awaiter s.vtable.writeOp(s, nil, 0)
s.span = getWritableSpan(s.buffers)
s.spanEndPos += s.span.len - runway
if s.vtable.flushOp != nil: if s.vtable.flushOp != nil:
awaiter s.vtable.flushOp(s) awaiter s.vtable.flushOp(s)