From 85cb9d221c5537f10ec3ebffaf7668c1863adfc7 Mon Sep 17 00:00:00 2001 From: Simplxs Date: Fri, 27 Oct 2023 17:32:02 +0800 Subject: [PATCH] fix proto --- xposed/src/main/java/moe/fuqiuluo/proto/Proto.kt | 2 +- xposed/src/main/java/moe/fuqiuluo/proto/ProtoMap.kt | 8 +++++--- xposed/src/main/java/moe/fuqiuluo/proto/ProtoUtils.kt | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/proto/Proto.kt b/xposed/src/main/java/moe/fuqiuluo/proto/Proto.kt index f14fb4b..f5cd539 100644 --- a/xposed/src/main/java/moe/fuqiuluo/proto/Proto.kt +++ b/xposed/src/main/java/moe/fuqiuluo/proto/Proto.kt @@ -60,7 +60,7 @@ val ProtoValue.asList: ProtoList val ProtoValue.asByteArray: ByteArray get() = if (this is ProtoMap) { - toByteArray() + bytes?.toByteArray() ?: toByteArray() } else { (this as ProtoByteString).toByteArray() } diff --git a/xposed/src/main/java/moe/fuqiuluo/proto/ProtoMap.kt b/xposed/src/main/java/moe/fuqiuluo/proto/ProtoMap.kt index b41e400..a747441 100644 --- a/xposed/src/main/java/moe/fuqiuluo/proto/ProtoMap.kt +++ b/xposed/src/main/java/moe/fuqiuluo/proto/ProtoMap.kt @@ -7,9 +7,11 @@ import kotlinx.serialization.json.JsonElement import moe.fuqiuluo.shamrock.tools.jsonObject class ProtoMap( - val value: HashMap + val value: HashMap, + val bytes: ByteString? ): ProtoValue { - constructor(): this(hashMapOf()) + constructor(): this(hashMapOf(), null) + constructor(value: HashMap): this(value, null) override fun has(vararg tags: Int): Boolean { var curMap: ProtoMap = this @@ -83,7 +85,7 @@ class ProtoMap( return@forEachIndexed } if (!curProtoMap.contains(tag)) { - val tmp = ProtoMap(hashMapOf()) + val tmp = ProtoMap() curProtoMap[tag] = tmp curProtoMap = tmp } else { diff --git a/xposed/src/main/java/moe/fuqiuluo/proto/ProtoUtils.kt b/xposed/src/main/java/moe/fuqiuluo/proto/ProtoUtils.kt index a6cb8ef..0faf18f 100644 --- a/xposed/src/main/java/moe/fuqiuluo/proto/ProtoUtils.kt +++ b/xposed/src/main/java/moe/fuqiuluo/proto/ProtoUtils.kt @@ -7,7 +7,7 @@ import com.google.protobuf.UnknownFieldSet object ProtoUtils { fun decodeFromByteArray(data: ByteArray): ProtoMap { val unknownFieldSet = UnknownFieldSet.parseFrom(data) - val dest = ProtoMap(hashMapOf()) + val dest = ProtoMap(hashMapOf(), ByteString.copyFrom(data)) printUnknownFieldSet(unknownFieldSet, dest) return dest } @@ -97,7 +97,7 @@ object ProtoUtils { field.lengthDelimitedList.forEach { try { val unknownFieldSet = UnknownFieldSet.parseFrom(it) - val map = ProtoMap(hashMapOf()) + val map = ProtoMap(hashMapOf(), it) printUnknownFieldSet(unknownFieldSet, map) dest[tag] = map } catch (e: Throwable) { @@ -105,7 +105,7 @@ object ProtoUtils { } } field.groupList.forEach { - val map = ProtoMap(hashMapOf()) + val map = ProtoMap() printUnknownFieldSet(it, map) dest[tag] = map }