diff --git a/src/main/kotlin/app/revanced/patcher/Patcher.kt b/src/main/kotlin/app/revanced/patcher/Patcher.kt index 34cadad..680036f 100644 --- a/src/main/kotlin/app/revanced/patcher/Patcher.kt +++ b/src/main/kotlin/app/revanced/patcher/Patcher.kt @@ -99,16 +99,14 @@ class Patcher( /** * Resolves all signatures. - * @throws IllegalStateException if no patches were added or signatures have already been resolved. + * @throws IllegalStateException if signatures have already been resolved. */ fun resolveSignatures(): List { if (signaturesResolved) { throw IllegalStateException("Signatures have already been resolved.") } + val signatures = patcherData.patches.flatMap { it.signatures } - if (signatures.isEmpty()) { - throw IllegalStateException("No signatures found to resolve.") - } SignatureResolver(patcherData.classes.internalClasses, signatures).resolve(patcherData) signaturesResolved = true return signatures @@ -120,14 +118,13 @@ class Patcher( * @return A map of [PatchResultSuccess]. If the [Patch] was successfully applied, * [PatchResultSuccess] will always be returned to the wrapping Result object. * If the [Patch] failed to apply, an Exception will always be returned to the wrapping Result object. - * @throws IllegalStateException if signatures have not been resolved. */ fun applyPatches( stopOnError: Boolean = false, callback: (String) -> Unit = {} ): Map> { if (!signaturesResolved && patcherData.patches.isNotEmpty()) { - throw IllegalStateException("Signatures not yet resolved, please invoke Patcher#resolveSignatures() first.") + resolveSignatures() } return buildMap { for (patch in patcherData.patches) { diff --git a/src/main/kotlin/app/revanced/patcher/signature/resolver/SignatureResolver.kt b/src/main/kotlin/app/revanced/patcher/signature/resolver/SignatureResolver.kt index a1f6de4..80ad401 100644 --- a/src/main/kotlin/app/revanced/patcher/signature/resolver/SignatureResolver.kt +++ b/src/main/kotlin/app/revanced/patcher/signature/resolver/SignatureResolver.kt @@ -16,8 +16,8 @@ internal class SignatureResolver( private val methodSignatures: Iterable ) { fun resolve(patcherData: PatcherData) { - for (classDef in classes) { - for (signature in methodSignatures) { + for (signature in methodSignatures) { + for (classDef in classes) { for (method in classDef.methods) { val patternScanData = compareSignatureToMethod(signature, method) ?: continue