Skip to content

Commit 0b99ef9

Browse files
committed
Fix more memory leaks.
1 parent 64117cd commit 0b99ef9

16 files changed

+58
-94
lines changed

RetailCoder.VBE/Inspections/Inspector.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ namespace Rubberduck.Inspections
1818
public class Inspector : IInspector
1919
{
2020
private readonly IGeneralConfigService _configService;
21-
private readonly IEnumerable<IInspection> _inspections;
21+
private readonly List<IInspection> _inspections;
2222

2323
public Inspector(IGeneralConfigService configService, IEnumerable<IInspection> inspections)
2424
{
25-
_inspections = inspections;
25+
_inspections = inspections.ToList();
2626

2727
_configService = configService;
2828
configService.SettingsChanged += ConfigServiceSettingsChanged;
@@ -127,6 +127,8 @@ public void Dispose()
127127
{
128128
_configService.SettingsChanged -= ConfigServiceSettingsChanged;
129129
}
130+
131+
_inspections.Clear();
130132
}
131133
}
132134
}

RetailCoder.VBE/Root/RubberduckModule.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ public override void Load()
7676
Assembly.GetAssembly(typeof(IIndenter))
7777
};
7878

79-
ApplyConfigurationConvention(assemblies);
8079
ApplyDefaultInterfacesConvention(assemblies);
80+
ApplyConfigurationConvention(assemblies);
8181
ApplyAbstractFactoryConvention(assemblies);
8282

8383
BindCommandsToMenuItems();
@@ -169,16 +169,16 @@ private void ApplyConfigurationConvention(IEnumerable<Assembly> assemblies)
169169
.BindAllInterfaces()
170170
.Configure(binding => binding.InSingletonScope()));
171171

172-
Bind<IPersistanceService<CodeInspectionSettings>>().To<XmlPersistanceService<CodeInspectionSettings>>().InSingletonScope();
173-
Bind<IPersistanceService<GeneralSettings>>().To<XmlPersistanceService<GeneralSettings>>().InSingletonScope();
174-
Bind<IPersistanceService<HotkeySettings>>().To<XmlPersistanceService<HotkeySettings>>().InSingletonScope();
175-
Bind<IPersistanceService<ToDoListSettings>>().To<XmlPersistanceService<ToDoListSettings>>().InSingletonScope();
176-
Bind<IPersistanceService<UnitTestSettings>>().To<XmlPersistanceService<UnitTestSettings>>().InSingletonScope();
177-
Bind<IPersistanceService<IndenterSettings>>().To<XmlPersistanceService<IndenterSettings>>().InSingletonScope();
178-
Bind<IFilePersistanceService<SourceControlSettings>>().To<XmlPersistanceService<SourceControlSettings>>().InSingletonScope();
172+
Bind<IPersistanceService<CodeInspectionSettings>>().To<XmlPersistanceService<CodeInspectionSettings>>().InCallScope();
173+
Bind<IPersistanceService<GeneralSettings>>().To<XmlPersistanceService<GeneralSettings>>().InCallScope();
174+
Bind<IPersistanceService<HotkeySettings>>().To<XmlPersistanceService<HotkeySettings>>().InCallScope();
175+
Bind<IPersistanceService<ToDoListSettings>>().To<XmlPersistanceService<ToDoListSettings>>().InCallScope();
176+
Bind<IPersistanceService<UnitTestSettings>>().To<XmlPersistanceService<UnitTestSettings>>().InCallScope();
177+
Bind<IPersistanceService<IndenterSettings>>().To<XmlPersistanceService<IndenterSettings>>().InCallScope();
178+
Bind<IFilePersistanceService<SourceControlSettings>>().To<XmlPersistanceService<SourceControlSettings>>().InCallScope();
179179

180-
Bind<IIndenterConfigProvider>().To<IndenterConfigProvider>().InSingletonScope();
181-
Bind<ISourceControlConfigProvider>().To<SourceControlConfigProvider>().InSingletonScope();
180+
Bind<IConfigProvider<IndenterSettings>>().To<IndenterConfigProvider>().InCallScope();
181+
Bind<IConfigProvider<SourceControlSettings>>().To<SourceControlConfigProvider>().InCallScope();
182182

183183
Bind<ICodeInspectionSettings>().To<CodeInspectionSettings>().InCallScope();
184184
Bind<IGeneralSettings>().To<GeneralSettings>().InCallScope();
@@ -311,7 +311,7 @@ private static int FindRubberduckMenuInsertionIndex(CommandBarControls controls,
311311
private void BindCommandsToMenuItems()
312312
{
313313
var types = Assembly.GetExecutingAssembly().GetTypes()
314-
.Where(type => type.IsClass && type.Namespace != null && type.Namespace.StartsWith(typeof(CommandBase).Namespace ?? String.Empty))
314+
.Where(type => type.IsClass && type.Namespace != null && type.Namespace.StartsWith(typeof(CommandBase).Namespace ?? string.Empty))
315315
.ToList();
316316

317317
// note: CommandBase naming convention: [Foo]Command
@@ -333,7 +333,7 @@ private void BindCommandsToMenuItems()
333333
binding.WhenInjectedInto<RubberduckHooks>().BindingConfiguration.Condition;
334334

335335
binding.When(request => whenCommandMenuItemCondition(request) || whenHooksCondition(request))
336-
.InSingletonScope();
336+
.InCallScope();
337337
}
338338
}
339339
catch (InvalidOperationException)

RetailCoder.VBE/Settings/CodeInspectionConfigProvider.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,7 @@
44

55
namespace Rubberduck.Settings
66
{
7-
public interface ICodeInspectionConfigProvider
8-
{
9-
CodeInspectionSettings Create();
10-
CodeInspectionSettings CreateDefaults();
11-
void Save(CodeInspectionSettings settings);
12-
}
13-
14-
public class CodeInspectionConfigProvider : ICodeInspectionConfigProvider
7+
public class CodeInspectionConfigProvider : IConfigProvider<CodeInspectionSettings>
158
{
169
private readonly IPersistanceService<CodeInspectionSettings> _persister;
1710

RetailCoder.VBE/Settings/ConfigurationLoader.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ public interface IGeneralConfigService : IConfigurationService<Configuration>
2323

2424
public class ConfigurationLoader : IGeneralConfigService
2525
{
26-
private readonly IGeneralConfigProvider _generalProvider;
27-
private readonly IHotkeyConfigProvider _hotkeyProvider;
28-
private readonly IToDoListConfigProvider _todoProvider;
29-
private readonly ICodeInspectionConfigProvider _inspectionProvider;
30-
private readonly IUnitTestConfigProvider _unitTestProvider;
31-
private readonly IIndenterConfigProvider _indenterProvider;
26+
private readonly IConfigProvider<GeneralSettings> _generalProvider;
27+
private readonly IConfigProvider<HotkeySettings> _hotkeyProvider;
28+
private readonly IConfigProvider<ToDoListSettings> _todoProvider;
29+
private readonly IConfigProvider<CodeInspectionSettings> _inspectionProvider;
30+
private readonly IConfigProvider<UnitTestSettings> _unitTestProvider;
31+
private readonly IConfigProvider<IndenterSettings> _indenterProvider;
3232

33-
public ConfigurationLoader(IGeneralConfigProvider generalProvider, IHotkeyConfigProvider hotkeyProvider, IToDoListConfigProvider todoProvider,
34-
ICodeInspectionConfigProvider inspectionProvider, IUnitTestConfigProvider unitTestProvider, IIndenterConfigProvider indenterProvider)
33+
public ConfigurationLoader(IConfigProvider<GeneralSettings> generalProvider, IConfigProvider<HotkeySettings> hotkeyProvider, IConfigProvider<ToDoListSettings> todoProvider,
34+
IConfigProvider<CodeInspectionSettings> inspectionProvider, IConfigProvider<UnitTestSettings> unitTestProvider, IConfigProvider<IndenterSettings> indenterProvider)
3535
{
3636
_generalProvider = generalProvider;
3737
_hotkeyProvider = hotkeyProvider;

RetailCoder.VBE/Settings/GeneralConfigProvider.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,7 @@
33

44
namespace Rubberduck.Settings
55
{
6-
public interface IGeneralConfigProvider
7-
{
8-
GeneralSettings Create();
9-
GeneralSettings CreateDefaults();
10-
11-
void Save(GeneralSettings settings);
12-
}
13-
14-
public class GeneralConfigProvider : IGeneralConfigProvider
6+
public class GeneralConfigProvider : IConfigProvider<GeneralSettings>
157
{
168
private GeneralSettings _current;
179
private readonly IPersistanceService<GeneralSettings> _persister;

RetailCoder.VBE/Settings/HotkeyConfigProvider.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,7 @@
22

33
namespace Rubberduck.Settings
44
{
5-
public interface IHotkeyConfigProvider
6-
{
7-
HotkeySettings Create();
8-
HotkeySettings CreateDefaults();
9-
void Save(HotkeySettings settings);
10-
}
11-
12-
public class HotkeyConfigProvider : IHotkeyConfigProvider
5+
public class HotkeyConfigProvider : IConfigProvider<HotkeySettings>
136
{
147
private readonly IPersistanceService<HotkeySettings> _persister;
158

@@ -19,7 +12,7 @@ public HotkeyConfigProvider(IPersistanceService<HotkeySettings> persister)
1912
}
2013

2114
public HotkeySettings Create()
22-
{
15+
{
2316
var prototype = new HotkeySettings();
2417
return _persister.Load(prototype) ?? prototype;
2518
}

RetailCoder.VBE/Settings/ToDoListConfigProvider.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,7 @@
22

33
namespace Rubberduck.Settings
44
{
5-
public interface IToDoListConfigProvider
6-
{
7-
ToDoListSettings Create();
8-
ToDoListSettings CreateDefaults();
9-
void Save(ToDoListSettings settings);
10-
}
11-
12-
public class ToDoListConfigProvider : IToDoListConfigProvider
5+
public class ToDoListConfigProvider : IConfigProvider<ToDoListSettings>
136
{
147
private readonly IPersistanceService<ToDoListSettings> _persister;
158

RetailCoder.VBE/Settings/UnitTestConfigProvider.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@
22

33
namespace Rubberduck.Settings
44
{
5-
public interface IUnitTestConfigProvider
6-
{
7-
UnitTestSettings Create();
8-
UnitTestSettings CreateDefaults();
9-
10-
void Save(UnitTestSettings settings);
11-
}
12-
13-
public class UnitTestConfigProvider : IUnitTestConfigProvider
5+
public class UnitTestConfigProvider : IConfigProvider<UnitTestSettings>
146
{
157
private readonly IPersistanceService<UnitTestSettings> _persister;
168

RetailCoder.VBE/UI/SourceControl/SettingsViewViewModel.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,21 @@
33
using System.IO;
44
using System.Windows.Forms;
55
using NLog;
6+
using Rubberduck.Settings;
67
using Rubberduck.UI.Command;
78
using Rubberduck.SourceControl;
89

910
namespace Rubberduck.UI.SourceControl
1011
{
1112
public class SettingsViewViewModel : ViewModelBase, IControlViewModel, IDisposable
1213
{
13-
private readonly ISourceControlConfigProvider _configService;
14+
private readonly IConfigProvider<SourceControlSettings> _configService;
1415
private readonly IFolderBrowserFactory _folderBrowserFactory;
1516
private readonly IOpenFileDialog _openFileDialog;
1617
private readonly SourceControlSettings _config;
1718

1819
public SettingsViewViewModel(
19-
ISourceControlConfigProvider configService,
20+
IConfigProvider<SourceControlSettings> configService,
2021
IFolderBrowserFactory folderBrowserFactory,
2122
IOpenFileDialog openFileDialog)
2223
{

RetailCoder.VBE/UI/SourceControl/SourceControlViewViewModel.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
using System.Windows.Forms;
1010
using System.Windows.Media.Imaging;
1111
using Microsoft.Vbe.Interop;
12-
using Ninject;
1312
using NLog;
1413
using Rubberduck.Parsing;
1514
using Rubberduck.Parsing.VBA;
15+
using Rubberduck.Settings;
1616
using Rubberduck.SourceControl;
1717
using Rubberduck.UI.Command;
1818
using Rubberduck.UI.Command.MenuItems;
@@ -36,7 +36,7 @@ public sealed class SourceControlViewViewModel : ViewModelBase, IDisposable
3636
private readonly ISinks _sinks;
3737
private readonly ISourceControlProviderFactory _providerFactory;
3838
private readonly IFolderBrowserFactory _folderBrowserFactory;
39-
private readonly ISourceControlConfigProvider _configService;
39+
private readonly IConfigProvider<SourceControlSettings> _configService;
4040
private readonly ICodePaneWrapperFactory _wrapperFactory;
4141
private readonly IMessageBox _messageBox;
4242
private readonly FileSystemWatcher _fileSystemWatcher;
@@ -51,7 +51,7 @@ public SourceControlViewViewModel(
5151
ISinks sinks,
5252
ISourceControlProviderFactory providerFactory,
5353
IFolderBrowserFactory folderBrowserFactory,
54-
ISourceControlConfigProvider configService,
54+
IConfigProvider<SourceControlSettings> configService,
5555
IEnumerable<IControlView> views,
5656
ICodePaneWrapperFactory wrapperFactory,
5757
IMessageBox messageBox)

0 commit comments

Comments
 (0)