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; + """ + ) }