diff --git a/shadowsocks-csharp/View/ConfigForm.cs b/shadowsocks-csharp/View/ConfigForm.cs index d506e8a1..8d2b4781 100755 --- a/shadowsocks-csharp/View/ConfigForm.cs +++ b/shadowsocks-csharp/View/ConfigForm.cs @@ -336,13 +336,16 @@ namespace Shadowsocks.View return; } - Server selectedServer = controller.GetCurrentServer(); - Server clone = (Server)selectedServer.Clone(); + if (ServersListBox.SelectedIndex >= 0 && ServersListBox.SelectedIndex < _modifiedConfiguration.configs.Count) + { + Server selectedServer = _modifiedConfiguration.configs[ServersListBox.SelectedIndex]; + Server clone = (Server)selectedServer.Clone(); - _modifiedConfiguration.configs.Add(clone); - LoadConfiguration(_modifiedConfiguration); - ServersListBox.SelectedIndex = _modifiedConfiguration.configs.Count - 1; - _lastSelectedIndex = ServersListBox.SelectedIndex; + _modifiedConfiguration.configs.Add(clone); + LoadConfiguration(_modifiedConfiguration); + ServersListBox.SelectedIndex = _modifiedConfiguration.configs.Count - 1; + _lastSelectedIndex = ServersListBox.SelectedIndex; + } } } }