about summary refs log tree commit diff
path: root/IrcTokens/StatefulDecoder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'IrcTokens/StatefulDecoder.cs')
-rw-r--r--IrcTokens/StatefulDecoder.cs9
1 files changed, 5 insertions, 4 deletions
diff --git a/IrcTokens/StatefulDecoder.cs b/IrcTokens/StatefulDecoder.cs
index 62d1703..b2bad5e 100644
--- a/IrcTokens/StatefulDecoder.cs
+++ b/IrcTokens/StatefulDecoder.cs
@@ -49,14 +49,15 @@ namespace IrcTokens
 
         public List<Line> Push(string data)
         {
-            return Push(Encoding.GetBytes(data));
+            var bytes = Encoding.GetBytes(data);
+            return Push(bytes, bytes.Length);
         }
 
-        public List<Line> Push(byte[] data)
+        public List<Line> Push(byte[] data, int bytesReceived)
         {
-            if (data == null || data.Length == 0) return null;
+            if (data == null) return null;
 
-            _buffer = _buffer == null ? Array.Empty<byte>() : _buffer.Concat(data).ToArray();
+            _buffer = _buffer == null ? Array.Empty<byte>() : _buffer.Concat(data.Take(bytesReceived)).ToArray();
 
             var listLines = _buffer.Split((byte) '\n').Select(l => l.Trim((byte) '\r')).ToList();
             _buffer = listLines.Last();