diff --git a/launcher/updater/MacSparkleUpdater.mm b/launcher/updater/MacSparkleUpdater.mm index c54708ee1..e043d3008 100644 --- a/launcher/updater/MacSparkleUpdater.mm +++ b/launcher/updater/MacSparkleUpdater.mm @@ -75,7 +75,6 @@ class MacSparkleUpdater::Private { SPUStandardUpdaterController* updaterController; UpdaterObserver* updaterObserver; UpdaterDelegate* updaterDelegate; - NSAutoreleasePool* autoReleasePool; }; MacSparkleUpdater::MacSparkleUpdater() { @@ -83,7 +82,6 @@ MacSparkleUpdater::MacSparkleUpdater() { // Enable Cocoa's memory management. NSApplicationLoad(); - priv->autoReleasePool = [[NSAutoreleasePool alloc] init]; // Delegate is used for setting/getting allowed update channels. priv->updaterDelegate = [[UpdaterDelegate alloc] init]; @@ -101,17 +99,19 @@ MacSparkleUpdater::MacSparkleUpdater() { } MacSparkleUpdater::~MacSparkleUpdater() { - [priv->updaterObserver removeObserver:priv->updaterObserver forKeyPath:@"updater.canCheckForUpdates"]; - - [priv->updaterController release]; + @autoreleasepool { + [priv->updaterObserver removeObserver:priv->updaterObserver forKeyPath:@"updater.canCheckForUpdates"]; + } [priv->updaterObserver release]; + [priv->updaterController release]; [priv->updaterDelegate release]; - [priv->autoReleasePool release]; delete priv; } void MacSparkleUpdater::checkForUpdates() { - [priv->updaterController checkForUpdates:nil]; + @autoreleasepool { + [priv->updaterController checkForUpdates:nil]; + } } bool MacSparkleUpdater::getAutomaticallyChecksForUpdates() { @@ -123,12 +123,14 @@ double MacSparkleUpdater::getUpdateCheckInterval() { } QSet MacSparkleUpdater::getAllowedChannels() { - // Convert NSSet -> QSet - __block QSet channels; - [priv->updaterDelegate.allowedChannels enumerateObjectsUsingBlock:^(NSString* channel, BOOL* stop) { - channels.insert(QString::fromNSString(channel)); - }]; - return channels; + @autoreleasepool { + // Convert NSSet -> QSet + __block QSet channels; + [priv->updaterDelegate.allowedChannels enumerateObjectsUsingBlock:^(NSString* channel, BOOL* stop) { + channels.insert(QString::fromNSString(channel)); + }]; + return channels; + } } bool MacSparkleUpdater::getBetaAllowed() { @@ -144,34 +146,40 @@ void MacSparkleUpdater::setUpdateCheckInterval(double seconds) { } void MacSparkleUpdater::clearAllowedChannels() { - priv->updaterDelegate.allowedChannels = [NSSet set]; + @autoreleasepool { + priv->updaterDelegate.allowedChannels = [NSSet set]; + } } void MacSparkleUpdater::setAllowedChannel(const QString& channel) { - if (channel.isEmpty()) { - clearAllowedChannels(); - return; - } + @autoreleasepool { + if (channel.isEmpty()) { + clearAllowedChannels(); + return; + } - NSSet* nsChannels = [NSSet setWithObject:channel.toNSString()]; - priv->updaterDelegate.allowedChannels = nsChannels; + NSSet* nsChannels = [NSSet setWithObject:channel.toNSString()]; + priv->updaterDelegate.allowedChannels = nsChannels; + } } void MacSparkleUpdater::setAllowedChannels(const QSet& channels) { - if (channels.isEmpty()) { - clearAllowedChannels(); - return; - } + @autoreleasepool { + if (channels.isEmpty()) { + clearAllowedChannels(); + return; + } - QString channelsConfig = ""; - // Convert QSet -> NSSet - NSMutableSet* nsChannels = [NSMutableSet setWithCapacity:channels.count()]; - for (const QString& channel : channels) { - [nsChannels addObject:channel.toNSString()]; - channelsConfig += channel + " "; - } + QString channelsConfig = ""; + // Convert QSet -> NSSet + NSMutableSet* nsChannels = [NSMutableSet setWithCapacity:channels.count()]; + for (const QString& channel : channels) { + [nsChannels addObject:channel.toNSString()]; + channelsConfig += channel + " "; + } - priv->updaterDelegate.allowedChannels = nsChannels; + priv->updaterDelegate.allowedChannels = nsChannels; + } } void MacSparkleUpdater::setBetaAllowed(bool allowed) {