From cf2b4a193cb275846ccbb16031feede37f710fe8 Mon Sep 17 00:00:00 2001 From: Karlatemp Date: Tue, 16 Nov 2021 18:11:13 +0800 Subject: [PATCH] Fix bytecode analyze --- mirai-core-utils/src/commonMain/kotlin/IO.kt | 7 +++++++ .../kotlin/network/protocol/data/richstatus/RichStatus.kt | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/mirai-core-utils/src/commonMain/kotlin/IO.kt b/mirai-core-utils/src/commonMain/kotlin/IO.kt index 3f4fd346a..d6109cea0 100644 --- a/mirai-core-utils/src/commonMain/kotlin/IO.kt +++ b/mirai-core-utils/src/commonMain/kotlin/IO.kt @@ -18,6 +18,7 @@ import kotlinx.io.charsets.Charset import kotlinx.io.core.* import java.io.File import kotlin.text.String +import java.nio.Buffer as JNioBuffer public val EMPTY_BYTE_ARRAY: ByteArray = ByteArray(0) @@ -37,6 +38,12 @@ public inline fun ByteReadPacket.readPacketExact( n: Int = remaining.toInt()//not that safe but adequate ): ByteReadPacket = this.readBytes(n).toReadPacket() +public inline var JNioBuffer.pos: Int + get() = position() + set(value) { + position(value) + } + public typealias TlvMap = MutableMap diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/data/richstatus/RichStatus.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/richstatus/RichStatus.kt index fafbd7b9f..814d8de54 100644 --- a/mirai-core/src/commonMain/kotlin/network/protocol/data/richstatus/RichStatus.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/richstatus/RichStatus.kt @@ -9,6 +9,7 @@ package net.mamoe.mirai.internal.network.protocol.data.richstatus +import net.mamoe.mirai.utils.pos import net.mamoe.mirai.utils.toIntUnsigned import java.nio.ByteBuffer import java.nio.ByteOrder @@ -81,7 +82,7 @@ internal class RichStatus( if (dataType in 1..127) { val dataContent = String(rawData, dataStartPosition, dataLength) lastPosition = dataStartPosition + dataLength - byteBuffer.position(lastPosition) + byteBuffer.pos = lastPosition when (dataType) { 1 -> rsp.actionText = dataContent @@ -157,7 +158,7 @@ internal class RichStatus( val var11 = ByteArray(dataLength) byteBuffer.get(var11) */ - byteBuffer.position(byteBuffer.position() + dataLength) + byteBuffer.pos += dataLength // Parse richstatus_sticker$RichStatus_Sticker } 162 -> { @@ -170,7 +171,7 @@ internal class RichStatus( } } lastPosition = dataStartPosition + dataLength - byteBuffer.position(lastPosition) + byteBuffer.pos = lastPosition } }