diff options
author | 2013-07-25 23:09:37 -0700 | |
---|---|---|
committer | 2013-07-25 23:09:37 -0700 | |
commit | c559c8834773c4d6d78cb0cccc968d2a3477f67a (patch) | |
tree | aa5daeec68ac98f5cee85333ee3fa9baa3d6e2cd /src/objc/smtp | |
parent | b27f76a56eebe7e297e9f7c2f00bf3b0eb61d662 (diff) |
Fixed memory leak on cancellation in ObjC API
Diffstat (limited to 'src/objc/smtp')
-rw-r--r-- | src/objc/smtp/MCOSMTPSendOperation.mm | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/objc/smtp/MCOSMTPSendOperation.mm b/src/objc/smtp/MCOSMTPSendOperation.mm index 8a7d5b04..8394e2cc 100644 --- a/src/objc/smtp/MCOSMTPSendOperation.mm +++ b/src/objc/smtp/MCOSMTPSendOperation.mm @@ -57,7 +57,7 @@ private: return [[[self alloc] initWithMCOperation:op] autorelease]; } -- (id)initWithMCOperation:(mailcore::Operation *)op +- (id) initWithMCOperation:(mailcore::Operation *)op { self = [super initWithMCOperation:op]; @@ -75,14 +75,23 @@ private: [super dealloc]; } -- (void)start:(void (^)(NSError *error))completionBlock { +- (void) start:(void (^)(NSError *error))completionBlock +{ _completionBlock = [completionBlock copy]; [self start]; } +- (void) cancel +{ + [_completionBlock release]; + _completionBlock = nil; + [super cancel]; +} + // This method needs to be duplicated from MCOSMTPOperation since _completionBlock // references the instance of this subclass and not the one from MCOSMTPOperation. -- (void)operationCompleted { +- (void)operationCompleted +{ if (_completionBlock == NULL) return; |