Skip to content

Commit 13b54d8

Browse files
committed
Bump version to v0.5.3
1 parent 2d063e4 commit 13b54d8

File tree

6 files changed

+39
-12
lines changed

6 files changed

+39
-12
lines changed

src/main/java/ca/fxco/memoryleakfix/MemoryLeakFix.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package ca.fxco.memoryleakfix;
22

3-
import io.netty.buffer.ByteBuf;
43
import net.fabricmc.api.ModInitializer;
54
import net.fabricmc.loader.api.FabricLoader;
65

6+
import net.minecraft.network.PacketByteBuf;
77
import org.spongepowered.asm.logging.ILogger;
88
import org.spongepowered.asm.logging.LoggerAdapterDefault;
99
import org.spongepowered.asm.mixin.MixinEnvironment;
@@ -15,7 +15,7 @@
1515

1616
public class MemoryLeakFix implements ModInitializer {
1717

18-
public static final Set<ByteBuf> BUFFERS_TO_CLEAR = Collections.synchronizedSet(new HashSet<>());
18+
public static final Set<PacketByteBuf> BUFFERS_TO_CLEAR = Collections.synchronizedSet(new HashSet<>());
1919

2020
@Override
2121
public void onInitialize() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package ca.fxco.memoryleakfix.extensions;
2+
3+
public interface ExtendPacketByteBuf {
4+
boolean isAccessible();
5+
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package ca.fxco.memoryleakfix.mixin.accessor;
22

3-
import io.netty.buffer.AbstractReferenceCountedByteBuf;
3+
import io.netty.buffer.ByteBuf;
44
import org.spongepowered.asm.mixin.Mixin;
55
import org.spongepowered.asm.mixin.gen.Invoker;
66

7-
@Mixin(AbstractReferenceCountedByteBuf.class)
8-
public interface AbstractReferenceCountedByteBufAccessor {
7+
@Mixin(ByteBuf.class)
8+
public interface ByteBufAccessor {
99
@Invoker("isAccessible")
1010
boolean invokeIsAccessible();
1111
}

src/main/java/ca/fxco/memoryleakfix/mixin/customPayloadLeak/MinecraftClient_freeBufferMixin.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package ca.fxco.memoryleakfix.mixin.customPayloadLeak;
22

33
import ca.fxco.memoryleakfix.MemoryLeakFix;
4-
import ca.fxco.memoryleakfix.mixin.accessor.AbstractReferenceCountedByteBufAccessor;
5-
import io.netty.buffer.ByteBuf;
4+
import ca.fxco.memoryleakfix.extensions.ExtendPacketByteBuf;
65
import net.fabricmc.api.EnvType;
76
import net.fabricmc.api.Environment;
87
import net.minecraft.client.MinecraftClient;
8+
import net.minecraft.network.PacketByteBuf;
99
import org.spongepowered.asm.mixin.Mixin;
1010
import org.spongepowered.asm.mixin.injection.At;
1111
import org.spongepowered.asm.mixin.injection.Inject;
@@ -20,10 +20,8 @@ public class MinecraftClient_freeBufferMixin {
2020
*/
2121

2222
// Make sure that the there is a reference to release first!
23-
private boolean tryRelease(ByteBuf buffer) {
24-
return buffer.refCnt() == 0 &&
25-
((AbstractReferenceCountedByteBufAccessor)buffer).invokeIsAccessible() &&
26-
buffer.release();
23+
private boolean tryRelease(PacketByteBuf buffer) {
24+
return ((ExtendPacketByteBuf)buffer).isAccessible() && buffer.release();
2725
}
2826

2927

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package ca.fxco.memoryleakfix.mixin.customPayloadLeak;
2+
3+
import ca.fxco.memoryleakfix.extensions.ExtendPacketByteBuf;
4+
import ca.fxco.memoryleakfix.mixin.accessor.ByteBufAccessor;
5+
import io.netty.buffer.ByteBuf;
6+
import net.minecraft.network.PacketByteBuf;
7+
import org.spongepowered.asm.mixin.Final;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.Shadow;
10+
11+
@Mixin(PacketByteBuf.class)
12+
public class PacketByteBuf_extendMixin implements ExtendPacketByteBuf {
13+
14+
@Shadow
15+
@Final
16+
private ByteBuf parent;
17+
18+
19+
@Override
20+
public boolean isAccessible() {
21+
return ((ByteBufAccessor)this.parent).invokeIsAccessible();
22+
}
23+
}

src/main/resources/memoryleakfix.mixins.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
"spongePoweredLeak.MinecraftServer_loadWorldMixin"
88
],
99
"client": [
10-
"accessor.AbstractReferenceCountedByteBufAccessor",
10+
"accessor.ByteBufAccessor",
1111
"customPayloadLeak.CustomPayloadS2CPacket_bufferMixin",
1212
"customPayloadLeak.MinecraftClient_freeBufferMixin",
13+
"customPayloadLeak.PacketByteBuf_extendMixin",
1314
"hugeScreenshotLeak.MinecraftClient_screenshotMixin",
1415
"readResourcesLeak.TextureUtil_freeBufferMixin",
1516
"spongePoweredLeak.Main_clientLoadedMixin",

0 commit comments

Comments
 (0)