From 0ade1d64a2c32b47372f744ee7b76ed144e4cfcd Mon Sep 17 00:00:00 2001 From: michael starke Date: Thu, 24 Mar 2016 16:01:03 +0100 Subject: [PATCH] Plugins cannot be loaded more than once --- MacPass/MPPluginManager.m | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/MacPass/MPPluginManager.m b/MacPass/MPPluginManager.m index 064999dc..c91e934b 100644 --- a/MacPass/MPPluginManager.m +++ b/MacPass/MPPluginManager.m @@ -111,6 +111,11 @@ NSString *const MPPluginManagerPluginBundleIdentifiyerKey = @"MPPluginManagerPlu continue; }; + if([self _validateBundle:pluginBundle]) { + NSLog(@"Plugin %@ already loaded!", pluginBundle.bundleIdentifier); + continue; + } + if(![pluginBundle loadAndReturnError:&error]) { NSLog(@"Bunlde Loading Error %@ %@", error.localizedDescription, error.localizedFailureReason); continue; @@ -137,6 +142,16 @@ NSString *const MPPluginManagerPluginBundleIdentifiyerKey = @"MPPluginManagerPlu } } +- (BOOL)_validateBundle:(NSBundle *)bundle { + for(MPPlugin *plugin in self.mutablePlugins) { + NSBundle *pluginBundle = [NSBundle bundleForClass:plugin.class]; + if([pluginBundle.bundleIdentifier isEqualToString:bundle.bundleIdentifier]) { + return YES; + } + } + return NO; +} + - (BOOL)_validURL:(NSURL *)url { return (NSOrderedSame == [url.pathExtension compare:kMPPluginFileExtension options:NSCaseInsensitiveSearch]); }