From b6b6f01b08ef928f4f0e8b672c36a0c630e16a8f Mon Sep 17 00:00:00 2001 From: Haowei Wen Date: Sat, 30 Apr 2022 18:38:50 +0800 Subject: [PATCH] use List to store constant strings instead of Set --- .../authlibinjector/transform/ClassTransformer.java | 11 +++++------ .../authlibinjector/transform/TransformContext.java | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/moe/yushi/authlibinjector/transform/ClassTransformer.java b/src/main/java/moe/yushi/authlibinjector/transform/ClassTransformer.java index d81679c..9f728ae 100644 --- a/src/main/java/moe/yushi/authlibinjector/transform/ClassTransformer.java +++ b/src/main/java/moe/yushi/authlibinjector/transform/ClassTransformer.java @@ -28,7 +28,6 @@ import java.lang.instrument.IllegalClassFormatException; import java.security.ProtectionDomain; import java.util.ArrayList; import java.util.Collections; -import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; @@ -87,7 +86,7 @@ public class ClassTransformer implements ClassFileTransformer { } @Override - public Set getStringConstants() { + public List getStringConstants() { return TransformHandle.this.getStringConstants(); } } @@ -96,7 +95,7 @@ public class ClassTransformer implements ClassFileTransformer { private final ClassLoader classLoader; private byte[] classBuffer; private ClassReader cachedClassReader; - private Set cachedConstants; + private List cachedConstants; private List appliedTransformers; private int minVersion = -1; @@ -119,8 +118,8 @@ public class ClassTransformer implements ClassFileTransformer { return (getClassReader().getAccess() & ACC_INTERFACE) != 0; } - private static Set extractStringConstants(ClassReader reader) { - Set constants = new HashSet<>(); + private static List extractStringConstants(ClassReader reader) { + List constants = new ArrayList<>(); int constantPoolSize = reader.getItemCount(); char[] buf = new char[reader.getMaxStringLength()]; for (int idx = 1; idx < constantPoolSize; idx++) { @@ -136,7 +135,7 @@ public class ClassTransformer implements ClassFileTransformer { return constants; } - private Set getStringConstants() { + private List getStringConstants() { if (cachedConstants == null) cachedConstants = extractStringConstants(getClassReader()); return cachedConstants; diff --git a/src/main/java/moe/yushi/authlibinjector/transform/TransformContext.java b/src/main/java/moe/yushi/authlibinjector/transform/TransformContext.java index 4d9daa0..525b031 100644 --- a/src/main/java/moe/yushi/authlibinjector/transform/TransformContext.java +++ b/src/main/java/moe/yushi/authlibinjector/transform/TransformContext.java @@ -16,7 +16,7 @@ */ package moe.yushi.authlibinjector.transform; -import java.util.Set; +import java.util.List; import org.objectweb.asm.Handle; public interface TransformContext { @@ -29,5 +29,5 @@ public interface TransformContext { Handle acquireCallbackMetafactory(); - Set getStringConstants(); + List getStringConstants(); }