diff --git a/protocol/src/main/resources/dart/ByteBuffer.dart b/protocol/src/main/resources/dart/ByteBuffer.dart index 44e90ec7..50e9a131 100644 --- a/protocol/src/main/resources/dart/ByteBuffer.dart +++ b/protocol/src/main/resources/dart/ByteBuffer.dart @@ -21,6 +21,7 @@ class ByteBuffer implements IByteBuffer { writeInt(length); setWriteOffset(currentWriteIndex); } else { + // sublist of Int8List is deep clone var retainedByteBuf = buffer.sublist(currentWriteIndex - length, currentWriteIndex); setWriteOffset(beforeWriteIndex); diff --git a/protocol/src/main/resources/gdscript/ByteBuffer.gd b/protocol/src/main/resources/gdscript/ByteBuffer.gd index 2cee0e70..6a8ce81a 100644 --- a/protocol/src/main/resources/gdscript/ByteBuffer.gd +++ b/protocol/src/main/resources/gdscript/ByteBuffer.gd @@ -24,6 +24,7 @@ func adjustPadding(predictionLength: int, beforeWriteIndex: int) -> void: writeInt(length) setWriteOffset(currentWriteIndex) else: + # get_partial_data of StreamPeerBuffer is deep clone buffer.seek(currentWriteIndex - length) var retainedByteBuf = buffer.get_partial_data(length)[1] setWriteOffset(beforeWriteIndex)