diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/buffer_builder_leak/BufferBuilderMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/buffer_builder_leak/BufferBuilderMixin.java index 7249216d..98237da3 100644 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/buffer_builder_leak/BufferBuilderMixin.java +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/buffer_builder_leak/BufferBuilderMixin.java @@ -5,6 +5,9 @@ import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.render.UnsafeBufferHelper; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.nio.ByteBuffer; @@ -14,6 +17,14 @@ public class BufferBuilderMixin { private static boolean leakReported = false; + /** + * Ensure UnsafeBufferHelper is classloaded early, to avoid Forge's event transformer showing an error in the log. + */ + @Inject(method = "", at = @At(value = "RETURN")) + private static void initUnsafeBufferHelper(CallbackInfo ci) { + UnsafeBufferHelper.init(); + } + @Override protected void finalize() throws Throwable { try { diff --git a/common/src/main/java/org/embeddedt/modernfix/render/UnsafeBufferHelper.java b/common/src/main/java/org/embeddedt/modernfix/render/UnsafeBufferHelper.java index acfeee83..69ab0cfe 100644 --- a/common/src/main/java/org/embeddedt/modernfix/render/UnsafeBufferHelper.java +++ b/common/src/main/java/org/embeddedt/modernfix/render/UnsafeBufferHelper.java @@ -33,6 +33,10 @@ public class UnsafeBufferHelper { } } + public static void init() { + + } + public static void free(ByteBuffer buf) { if(UNSAFE != null && ADDRESS >= 0) { // set the address to 0 to prevent double free