From 213031d99734ecaf995de26c52f267dbdfed4610 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sat, 25 Nov 2023 10:39:47 +0900 Subject: [PATCH] fix(Litho filter): fix force crash due to downgrade dependencies --- .../patches/music/utils/litho/LithoFilterPatch.kt | 10 +++++++--- .../patches/youtube/utils/litho/LithoFilterPatch.kt | 12 ++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/music/utils/litho/LithoFilterPatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/litho/LithoFilterPatch.kt index 905b606bf..6d6c75060 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/litho/LithoFilterPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/litho/LithoFilterPatch.kt @@ -4,7 +4,6 @@ import app.revanced.extensions.exception import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions -import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.music.utils.litho.fingerprints.LithoFilterFingerprint @@ -30,7 +29,7 @@ object LithoFilterPatch : BytecodePatch( LithoFilterFingerprint.result?.let { it.mutableMethod.apply { - removeInstructions(2, 4) // Remove dummy filter. + removeInstructions(0, 6) addFilter = { classDescriptor -> addInstructions( @@ -48,5 +47,10 @@ object LithoFilterPatch : BytecodePatch( } override fun close() = LithoFilterFingerprint.result!! - .mutableMethod.replaceInstruction(0, "const/16 v0, $filterCount") + .mutableMethod.addInstructions( + 0, """ + const/16 v0, $filterCount + new-array v0, v0, [$MUSIC_COMPONENTS_PATH/Filter; + """ + ) } diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/litho/LithoFilterPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/litho/LithoFilterPatch.kt index 5b3e74f9e..b965fb238 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/litho/LithoFilterPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/litho/LithoFilterPatch.kt @@ -5,7 +5,6 @@ import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions -import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.shared.patch.litho.ComponentParserPatch @@ -45,11 +44,11 @@ object LithoFilterPatch : BytecodePatch( generalHook("$INTEGRATIONS_CLASS_DESCRIPTOR->filter") LithoFilterFingerprint.result?.mutableMethod?.apply { - removeInstructions(2, 4) // Remove dummy filter. + removeInstructions(0, 6) addFilter = { classDescriptor -> addInstructions( - 2, """ + 0, """ new-instance v1, $classDescriptor invoke-direct {v1}, $classDescriptor->()V const/16 v2, ${filterCount++} @@ -62,5 +61,10 @@ object LithoFilterPatch : BytecodePatch( } override fun close() = LithoFilterFingerprint.result!! - .mutableMethod.replaceInstruction(0, "const/16 v0, $filterCount") + .mutableMethod.addInstructions( + 0, """ + const/16 v0, $filterCount + new-array v0, v0, [$COMPONENTS_PATH/Filter; + """ + ) }