From b2fb95f857453bf6eefbebbbfdff78951f6f7f9e Mon Sep 17 00:00:00 2001 From: Charlie Hess Date: Wed, 4 May 2016 11:28:49 -0700 Subject: [PATCH] Use scoped_nsobject to ensure our intermediate objects get cleaned up. --- atom/browser/browser_mac.mm | 8 ++++---- atom/browser/mac/atom_application.h | 3 ++- atom/browser/mac/atom_application.mm | 4 ++-- atom/browser/mac/atom_application_delegate.mm | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/atom/browser/browser_mac.mm b/atom/browser/browser_mac.mm index 069579354b..42d10debd0 100644 --- a/atom/browser/browser_mac.mm +++ b/atom/browser/browser_mac.mm @@ -91,16 +91,16 @@ void Browser::SetUserActivity(const std::string& type, const std::map user_info_args([[NSMutableDictionary alloc] init]); for (auto const &pair : user_info) { NSString* value_ns = [NSString stringWithUTF8String:pair.second.c_str()]; NSString* key_ns = [NSString stringWithUTF8String:pair.first.c_str()]; - [user_info_args setObject:value_ns - forKey:key_ns]; + [user_info_args.get() setObject:value_ns + forKey:key_ns]; } - user_activity.userInfo = user_info_args; + user_activity.userInfo = user_info_args.get(); [user_activity becomeCurrent]; [[AtomApplication sharedApplication] setCurrentActivity:user_activity]; diff --git a/atom/browser/mac/atom_application.h b/atom/browser/mac/atom_application.h index e31a9926eb..37074cae7b 100644 --- a/atom/browser/mac/atom_application.h +++ b/atom/browser/mac/atom_application.h @@ -3,12 +3,13 @@ // found in the LICENSE file. #import "base/mac/scoped_sending_event.h" +#import "base/mac/scoped_nsobject.h" @interface AtomApplication : NSApplication { @private BOOL handlingSendEvent_; - NSUserActivity* currentActivity_; + base::scoped_nsobject currentActivity_; } + (AtomApplication*)sharedApplication; diff --git a/atom/browser/mac/atom_application.mm b/atom/browser/mac/atom_application.mm index 3fe6658e4c..1811511304 100644 --- a/atom/browser/mac/atom_application.mm +++ b/atom/browser/mac/atom_application.mm @@ -29,11 +29,11 @@ } - (void)setCurrentActivity:(NSUserActivity*)userActivity { - currentActivity_ = userActivity; + currentActivity_ = base::scoped_nsobject(userActivity); } - (NSUserActivity*)getCurrentActivity { - return currentActivity_; + return currentActivity_.get(); } - (void)awakeFromNib { diff --git a/atom/browser/mac/atom_application_delegate.mm b/atom/browser/mac/atom_application_delegate.mm index 2309a7591a..0904679c49 100644 --- a/atom/browser/mac/atom_application_delegate.mm +++ b/atom/browser/mac/atom_application_delegate.mm @@ -65,9 +65,9 @@ continueUserActivity:(NSUserActivity *)userActivity std::string activity_type(base::SysNSStringToUTF8(userActivity.activityType)); std::map user_info; + base::scoped_nsobject keys([userActivity.userInfo allKeys]); - NSArray* keys = [userActivity.userInfo allKeys]; - for (NSString* key in keys) { + for (NSString* key in keys.get()) { NSString* value = [userActivity.userInfo objectForKey:key]; std::string key_str(base::SysNSStringToUTF8(key)); std::string value_str(base::SysNSStringToUTF8(value));