From 6e483501d4d7e9e912eaf98957b319425822227d Mon Sep 17 00:00:00 2001 From: ktlo Date: Sun, 1 Aug 2021 20:50:53 +0300 Subject: [PATCH] Concurrency bug in RPCDeviceBusAdapter.java fix --- src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java b/src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java index 9a80c07a..a4924ba6 100644 --- a/src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java +++ b/src/main/java/li/cil/oc2/common/bus/RPCDeviceBusAdapter.java @@ -390,7 +390,7 @@ public final class RPCDeviceBusAdapter implements Steppable { if (receiveBuffer != null) throw new IllegalStateException(); final String json = gson.toJson(new Message(type, data)); final byte[] bytes = json.getBytes(); - receiveBuffer = ByteBuffer.allocate(bytes.length + MESSAGE_DELIMITER.length * 2); + final ByteBuffer receiveBuffer = ByteBuffer.allocate(bytes.length + MESSAGE_DELIMITER.length * 2); // In case we went through a reset and the VM was in the middle of reading // a message we inject a delimiter up front to cause the truncated message @@ -405,6 +405,7 @@ public final class RPCDeviceBusAdapter implements Steppable { receiveBuffer.put(MESSAGE_DELIMITER); receiveBuffer.flip(); + this.receiveBuffer = receiveBuffer; } ///////////////////////////////////////////////////////////////////