diff --git a/IrcStates/ISupport.cs b/IrcStates/ISupport.cs index db2f537..f481f5f 100644 --- a/IrcStates/ISupport.cs +++ b/IrcStates/ISupport.cs @@ -71,13 +71,22 @@ namespace IrcStates StatusMsg.AddRange(value.Select(c => c.ToString(CultureInfo.InvariantCulture))); break; case "MODES": - Modes = int.Parse(value, NumberStyles.Integer, CultureInfo.InvariantCulture); + if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var modes)) + Modes = modes; + else + Modes = -1; break; case "MONITOR": - Monitor = int.Parse(value, NumberStyles.Integer, CultureInfo.InvariantCulture); + if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var monitor)) + Monitor = monitor; + else + Monitor = -1; break; case "WATCH": - Watch = int.Parse(value, NumberStyles.Integer, CultureInfo.InvariantCulture); + if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var watch)) + Watch = watch; + else + Watch = -1; break; case "CASEMAPPING": if (Enum.TryParse(value, true, out Casemap.CaseMapping caseMapping)) CaseMapping = caseMapping; diff --git a/IrcStates/Tests/ISupport.cs b/IrcStates/Tests/ISupport.cs index c5698a2..6cd2f48 100644 --- a/IrcStates/Tests/ISupport.cs +++ b/IrcStates/Tests/ISupport.cs @@ -53,7 +53,7 @@ namespace IrcStates.Tests Assert.AreEqual("o", _server.ISupport.Prefix.FromPrefix("@")); Assert.IsNull(_server.ISupport.Prefix.FromPrefix("&")); - _server.Parse(new Line("005 * PREFIX=(qaohv)~&#%+ *")); + _server.Parse(new Line("005 * PREFIX=(qaohv)~&@%+ *")); CollectionAssert.AreEqual(new List { "q",