fix fucking java nio buffer bugs

This commit is contained in:
tursom 2020-01-21 12:35:51 +08:00
parent 5e7d84e856
commit 3a11dac3b4
2 changed files with 20 additions and 10 deletions

View File

@ -33,11 +33,16 @@ class DirectByteBuffer(
}
override fun reset() {
buffer.limit(writePosition)
buffer.position(readPosition)
buffer.compact()
readPosition = buffer.position()
writePosition = buffer.limit()
if (writePosition == readPosition) {
readPosition = 0
writePosition = 0
} else {
buffer.limit(writePosition)
buffer.position(readPosition)
buffer.compact()
readPosition = buffer.position()
writePosition = buffer.limit()
}
}
override fun slice(position: Int, size: Int, readPosition: Int, writePosition: Int): ByteBuffer {

View File

@ -41,11 +41,16 @@ class HeapByteBuffer(
}
override fun reset() {
buffer.limit(writePosition)
buffer.position(readPosition)
buffer.compact()
readPosition = buffer.position()
writePosition = buffer.limit()
if (writePosition == readPosition) {
readPosition = 0
writePosition = 0
} else {
buffer.limit(writePosition)
buffer.position(readPosition)
buffer.compact()
readPosition = buffer.position()
writePosition = buffer.limit()
}
}
override fun slice(position: Int, size: Int, readPosition: Int, writePosition: Int): ByteBuffer {