Skip to content

Commit

Permalink
fix: ConcurrentModificationException while iterating through `proxi…
Browse files Browse the repository at this point in the history
…es` and modifying it

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
  • Loading branch information
oSumAtrIX committed Jun 5, 2022
1 parent beff1df commit 6cb7cdb
Showing 1 changed file with 8 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,21 @@ class ProxyBackedClassList(internal val internalClasses: MutableList<ClassDef>)
}

/**
* Apply all resolved classes into [internalClasses] and clear the [proxies] list.
* Apply all resolved classes into [internalClasses] and clean the [proxies] list.
*/
fun applyProxies() {
proxies.forEachIndexed { i, proxy ->
if (!proxy.proxyUsed) return@forEachIndexed
// FIXME: check if this could cause issues when multiple patches use the same proxy
proxies.removeIf { proxy ->
// if the proxy is unused, keep it in the list
if (!proxy.proxyUsed) return@removeIf false

// if it has been used, replace the internal class which it proxied
val index = internalClasses.indexOfFirst { it.type == proxy.immutableClass.type }
internalClasses[index] = proxy.mutatedClass

proxies.removeAt(i) // FIXME: check if this could cause issues when multiple patches use the same proxy
// return true to remove it from the proxies list
return@removeIf true
}

}

override val size get() = internalClasses.size
Expand Down

0 comments on commit 6cb7cdb

Please sign in to comment.