diff --git a/shadowsocks-csharp/Controller/Service/GfwListUpdater.cs b/shadowsocks-csharp/Controller/Service/GfwListUpdater.cs index 42dc70ca42..e89935b2df 100644 --- a/shadowsocks-csharp/Controller/Service/GfwListUpdater.cs +++ b/shadowsocks-csharp/Controller/Service/GfwListUpdater.cs @@ -39,12 +39,15 @@ private void http_DownloadStringCompleted(object sender, DownloadStringCompleted if (File.Exists(PACServer.USER_RULE_FILE)) { string local = File.ReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); - string[] rules = local.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); - foreach (string rule in rules) + using (var sr = new StringReader(local)) { - if (rule[0] == '!' || rule[0] == '[') - continue; - lines.Add(rule); + string rule; + while ((rule = sr.ReadLine()) != null) + { + if (rule == "" || rule[0] == '!' || rule[0] == '[') + continue; + lines.Add(rule); + } } } string abpContent; @@ -93,13 +96,16 @@ public static List ParseResult(string response) { byte[] bytes = Convert.FromBase64String(response); string content = Encoding.ASCII.GetString(bytes); - string[] lines = content.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); - List valid_lines = new List(lines.Length); - foreach (string line in lines) + List valid_lines = new List(); + using (var sr = new StringReader(content)) { - if (line[0] == '!' || line[0] == '[') - continue; - valid_lines.Add(line); + string line; + while ((line = sr.ReadLine()) != null) + { + if (line == "" || line[0] == '!' || line[0] == '[') + continue; + valid_lines.Add(line); + } } return valid_lines; } diff --git a/shadowsocks-csharp/Controller/ShadowsocksController.cs b/shadowsocks-csharp/Controller/ShadowsocksController.cs index 0950c2d91e..960b8f9788 100755 --- a/shadowsocks-csharp/Controller/ShadowsocksController.cs +++ b/shadowsocks-csharp/Controller/ShadowsocksController.cs @@ -454,12 +454,15 @@ private void pacServer_UserRuleFileChanged(object sender, EventArgs e) if (File.Exists(PACServer.USER_RULE_FILE)) { string local = File.ReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); - string[] rules = local.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); - foreach (string rule in rules) + using (var sr = new StringReader(local)) { - if (rule[0] == '!' || rule[0] == '[') - continue; - lines.Add(rule); + string rule; + while ((rule = sr.ReadLine()) != null) + { + if (rule == "" || rule[0] == '!' || rule[0] == '[') + continue; + lines.Add(rule); + } } } string abpContent;