about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBen Harris <ben@tilde.team>2020-04-22 10:50:30 -0400
committerBen Harris <ben@tilde.team>2020-04-22 10:50:30 -0400
commit06a9882f65a6c2f7e72cc30340c28cf6bb76bcd1 (patch)
treeacddc7b989f3c399192b881c71f00cccd6782d07
parentbe91164499b263fc4c716c6d44c69f440f8ab634 (diff)
all stateful tests pass!
-rw-r--r--IrcTokens/StatefulDecoder.cs23
1 files changed, 16 insertions, 7 deletions
diff --git a/IrcTokens/StatefulDecoder.cs b/IrcTokens/StatefulDecoder.cs
index e094760..2304431 100644
--- a/IrcTokens/StatefulDecoder.cs
+++ b/IrcTokens/StatefulDecoder.cs
@@ -13,14 +13,26 @@ namespace IrcTokens
 
         public Encoding Encoding
         {
-            get => _encoding ?? Encoding.UTF8;
-            set => _encoding = value;
+            get => _encoding ?? Encoding.GetEncoding(Encoding.UTF8.CodePage, EncoderFallback.ExceptionFallback,
+                       DecoderFallback.ExceptionFallback);
+            set
+            {
+                if (value != null)
+                    _encoding = Encoding.GetEncoding(value.CodePage, EncoderFallback.ExceptionFallback,
+                        DecoderFallback.ReplacementFallback);
+            }
         }
 
         public Encoding Fallback
         {
-            get => _fallback ?? Encoding.GetEncoding("iso-8859-1");
-            set => _fallback = value;
+            get => _fallback ?? Encoding.GetEncoding(Encoding.GetEncoding("iso-8859-1").CodePage,
+                EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback);
+            set
+            {
+                if (value != null)
+                    _encoding = Encoding.GetEncoding(value.CodePage, EncoderFallback.ReplacementFallback,
+                        DecoderFallback.ReplacementFallback);
+            }
         }
 
         public string Pending => Encoding.GetString(_buffer);
@@ -79,9 +91,6 @@ namespace IrcTokens
                 }
             }
 
-            //_buffer = listLines.Last().ToArray();
-            //listLines.RemoveAt(listLines.Count - 1);
-
             var decodeLines = new List<string>();
             foreach (var line in listLines.Select(l => l.ToArray()))
             {