Stronger guarantees for write block sizes
Certain output streams such as compressors and ciphers may require a certain block size on each write.
This commit is contained in:
parent
2bc3941e76
commit
6250518b6f
1 changed files with 10 additions and 9 deletions
|
|
@ -223,16 +223,17 @@ proc writeDataAsPages(s: OutputStreamVar, data: ptr byte, dataLen: int) =
|
||||||
data = data
|
data = data
|
||||||
dataLen = dataLen
|
dataLen = dataLen
|
||||||
|
|
||||||
if dataLen < s.maxWriteSize:
|
if dataLen > s.pageSize:
|
||||||
s.vtable.writePage(s, makeOpenArray(data, dataLen))
|
if dataLen < s.maxWriteSize:
|
||||||
s.endPos += dataLen
|
s.vtable.writePage(s, makeOpenArray(data, dataLen))
|
||||||
return
|
s.endPos += dataLen
|
||||||
|
return
|
||||||
|
|
||||||
while dataLen > s.pageSize:
|
while dataLen > s.pageSize:
|
||||||
s.vtable.writePage(s, makeOpenArray(data, s.pageSize))
|
s.vtable.writePage(s, makeOpenArray(data, s.pageSize))
|
||||||
data = shift(data, s.pageSize)
|
data = shift(data, s.pageSize)
|
||||||
dec dataLen, s.pageSize
|
dec dataLen, s.pageSize
|
||||||
s.endPos += s.pageSize
|
s.endPos += s.pageSize
|
||||||
|
|
||||||
copyMem(s.cursor.head, data, dataLen)
|
copyMem(s.cursor.head, data, dataLen)
|
||||||
s.cursor.head = shift(s.cursor.head, dataLen)
|
s.cursor.head = shift(s.cursor.head, dataLen)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue