about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-04-20 14:30:58 +0200
committerbptato <nincsnevem662@gmail.com>2024-04-20 14:30:58 +0200
commite59de8e03cbc9633d8906a8d04fe89638cf31ba1 (patch)
tree4f436170ef0a8698a8b0500b9ebdcc8230368a1d
parenteabac7f43867e40cde927ec7b552b011968946dc (diff)
downloadchawan-e59de8e03cbc9633d8906a8d04fe89638cf31ba1.tar.gz
buffer: fix switch from charset decoder to UTF-8 validator
The validator is used only if the decoder is nil, so it must be cleared
in switchCharset.
-rw-r--r--src/server/buffer.nim4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/server/buffer.nim b/src/server/buffer.nim
index 74dc3c2f..10d1cce0 100644
--- a/src/server/buffer.nim
+++ b/src/server/buffer.nim
@@ -704,8 +704,10 @@ func canSwitch(buffer: Buffer): bool {.inline.} =
 
 proc initDecoder(buffer: Buffer) =
   if buffer.charset != CHARSET_UTF_8:
+    buffer.validator = nil
     buffer.decoder = newTextDecoder(buffer.charset)
   else:
+    buffer.decoder = nil
     buffer.validator = (ref TextValidatorUTF8)()
 
 proc switchCharset(buffer: Buffer) =
@@ -1167,7 +1169,7 @@ proc onload(buffer: Buffer) =
   while true:
     try:
       if not reprocess:
-        n = buffer.istream.recvData(addr iq[0], iq.len)
+        n = buffer.istream.recvData(iq)
         buffer.bytesRead += n
       if n != 0:
         if not buffer.processData(iq.toOpenArray(0, n - 1)):