diff options
author | Tobias Markmann <tm@ayena.de> | 2015-11-03 12:20:20 (GMT) |
---|---|---|
committer | Swift Review <review@swift.im> | 2015-11-06 10:50:52 (GMT) |
commit | 7302ee18a137f6810ef1cc40a395f99d2f46a644 (patch) | |
tree | 6360ffe3666118ad4e30628336c8705e240bd465 /SwifTools/Notifier | |
parent | 8405fa16b738b6ef6a5920cd9d0f5735f8b62369 (diff) | |
download | swift-7302ee18a137f6810ef1cc40a395f99d2f46a644.zip swift-7302ee18a137f6810ef1cc40a395f99d2f46a644.tar.bz2 |
Fix potential memory leaks in Cocoa API usage
These errors were reported by Clang Analyzer.
Test-Information:
Verified that behavior is still as expected and Clang
Analyzer does not report the warnings anymore.
Change-Id: I149d75241f7680a6d2f2b6b710dd38d1ed81a209
Diffstat (limited to 'SwifTools/Notifier')
-rw-r--r-- | SwifTools/Notifier/NotificationCenterNotifier.mm | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/SwifTools/Notifier/NotificationCenterNotifier.mm b/SwifTools/Notifier/NotificationCenterNotifier.mm index 28cacb6..74d814e 100644 --- a/SwifTools/Notifier/NotificationCenterNotifier.mm +++ b/SwifTools/Notifier/NotificationCenterNotifier.mm @@ -57,23 +57,25 @@ void NotificationCenterNotifier::showMessage(Type type, const std::string& subje if (std::find(defaultTypes.begin(), defaultTypes.end(), type) == defaultTypes.end()) { return; } - + NSImage* image = [[NSImage alloc] initWithContentsOfFile: STD2NSSTRING(picture.string())]; NSUserNotification* notification = [[NSUserNotification alloc] init]; - notification.title = STD2NSSTRING(typeToString(type)); - notification.subtitle = STD2NSSTRING(subject); - notification.informativeText = STD2NSSTRING(description); - notification.contentImage = [[NSImage alloc] initWithContentsOfFile: STD2NSSTRING(picture.string())]; + [notification setTitle:STD2NSSTRING(typeToString(type))]; + [notification setSubtitle:STD2NSSTRING(subject)]; + [notification setInformativeText:STD2NSSTRING(description)]; + [notification setContentImage: image]; + [image release]; // The OS X Notification Center API does not allow to attach custom data, like a pointer to a callback function, // to the NSUserNotification object. Therefore we maintain a mapping from a NSUserNotification instance's identification // to their respective callbacks. - notification.identifier = [[NSUUID UUID] UUIDString]; + [notification setIdentifier:[[NSUUID UUID] UUIDString]]; /// \todo Currently the elements are only removed on application exit. Ideally the notifications not required anymore /// are removed from the map; e.g. when visiting a chat view, all notifications from that view can be removed from /// the map and the NSUserNotificationCenter. p->callbacksForNotifications[NS2STDSTRING(notification.identifier)] = boost::make_shared<Context>(callback); [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; + [notification release]; } void NotificationCenterNotifier::purgeCallbacks() { |