diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt index 582a41b8ba08db60a71b1d16184d87adaa0ece0e..300f25a8743c7adedc6fe6f2e31d9665fdc9bf00 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt @@ -10,7 +10,7 @@ import java.nio.charset.CharsetDecoder import java.nio.charset.CharsetEncoder abstract class StringSerializer( - private var encoder: CharsetEncoder, + private val encoder: CharsetEncoder, private val decoder: CharsetDecoder, private val trailingNullBytes: Int ) : Serializer<String?> { @@ -51,7 +51,7 @@ abstract class StringSerializer( val charBuffer = charBuffer(data.length) charBuffer.put(data) charBuffer.flip() - encoder = encoder.charset().newEncoder() + encoder.reset() val byteBuffer = encoder.encode(charBuffer) IntSerializer.serialize(buffer, byteBuffer.remaining() + trailingNullBytes, features) buffer.put(byteBuffer) @@ -71,7 +71,7 @@ abstract class StringSerializer( val charBuffer = charBuffer(data.length) charBuffer.put(data) charBuffer.flip() - encoder = encoder.charset().newEncoder() + encoder.reset() return encoder.encode(charBuffer) } } catch (e: Throwable) { @@ -88,6 +88,7 @@ abstract class StringSerializer( val limit = buffer.limit() buffer.limit(buffer.position() + len - trailingNullBytes) val charBuffer = charBuffer(len) + decoder.reset() decoder.decode(buffer, charBuffer, true) buffer.limit(limit) buffer.position(buffer.position() + trailingNullBytes) @@ -109,6 +110,7 @@ abstract class StringSerializer( val limit = buffer.limit() buffer.limit(buffer.position() + Math.max(0, len - trailingNullBytes)) val charBuffer = charBuffer(len) + decoder.reset() decoder.decode(buffer, charBuffer, true) buffer.limit(limit) buffer.position(buffer.position() + trailingNullBytes)