From ec84b4478a9197499f025f3164830402de7404f4 Mon Sep 17 00:00:00 2001 From: AlexIIL Date: Sat, 29 Mar 2025 23:35:26 +0000 Subject: [PATCH] Move ServiceLoader.iterator.hasNext call inside the try...catch in MixinService. This is because ServiceLoader.iterator may attempt to load services during either hasNext or next, however only the second call was being handled correctly. --- .../java/org/spongepowered/asm/service/MixinService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/spongepowered/asm/service/MixinService.java b/src/main/java/org/spongepowered/asm/service/MixinService.java index a6b871620..39575a661 100644 --- a/src/main/java/org/spongepowered/asm/service/MixinService.java +++ b/src/main/java/org/spongepowered/asm/service/MixinService.java @@ -204,8 +204,11 @@ private IMixinService initService() { Iterator iter = this.serviceLoader.iterator(); List badServices = new ArrayList(); int brokenServiceCount = 0; - while (iter.hasNext()) { + while (true) { try { + if (!iter.hasNext()) { + break; + } IMixinService service = iter.next(); if (this.bootedServices.contains(service.getClass().getName())) { MixinService.logBuffer.debug("MixinService [{}] was successfully booted in {}", service.getName(),