From c559c8834773c4d6d78cb0cccc968d2a3477f67a Mon Sep 17 00:00:00 2001 From: "Hoa V. Dinh" Date: Thu, 25 Jul 2013 23:09:37 -0700 Subject: Fixed memory leak on cancellation in ObjC API --- src/objc/pop/MCOPOPFetchHeaderOperation.mm | 12 ++++++++++-- src/objc/pop/MCOPOPFetchMessageOperation.mm | 13 +++++++++++-- src/objc/pop/MCOPOPFetchMessagesOperation.mm | 12 ++++++++++-- 3 files changed, 31 insertions(+), 6 deletions(-) (limited to 'src/objc/pop') diff --git a/src/objc/pop/MCOPOPFetchHeaderOperation.mm b/src/objc/pop/MCOPOPFetchHeaderOperation.mm index ab467a76..c0201ef5 100644 --- a/src/objc/pop/MCOPOPFetchHeaderOperation.mm +++ b/src/objc/pop/MCOPOPFetchHeaderOperation.mm @@ -38,13 +38,21 @@ typedef void (^CompletionType)(NSError *error, MCOMessageHeader * header); [super dealloc]; } -- (void)start:(void (^)(NSError *error, MCOMessageHeader * header))completionBlock +- (void) start:(void (^)(NSError *error, MCOMessageHeader * header))completionBlock { _completionBlock = [completionBlock copy]; [self start]; } -- (void)operationCompleted { +- (void) cancel +{ + [_completionBlock release]; + _completionBlock = nil; + [super cancel]; +} + +- (void) operationCompleted +{ if (_completionBlock == NULL) return; diff --git a/src/objc/pop/MCOPOPFetchMessageOperation.mm b/src/objc/pop/MCOPOPFetchMessageOperation.mm index 02bad3ad..3f5f0000 100644 --- a/src/objc/pop/MCOPOPFetchMessageOperation.mm +++ b/src/objc/pop/MCOPOPFetchMessageOperation.mm @@ -75,12 +75,21 @@ private: [super dealloc]; } -- (void)start:(void (^)(NSError *error, NSData * messageData))completionBlock { +- (void) start:(void (^)(NSError *error, NSData * messageData))completionBlock +{ _completionBlock = [completionBlock copy]; [self start]; } -- (void)operationCompleted { +- (void) cancel +{ + [_completionBlock release]; + _completionBlock = nil; + [super cancel]; +} + +- (void) operationCompleted +{ if (_completionBlock == NULL) return; diff --git a/src/objc/pop/MCOPOPFetchMessagesOperation.mm b/src/objc/pop/MCOPOPFetchMessagesOperation.mm index 2fe9b31f..889baf74 100644 --- a/src/objc/pop/MCOPOPFetchMessagesOperation.mm +++ b/src/objc/pop/MCOPOPFetchMessagesOperation.mm @@ -38,13 +38,21 @@ typedef void (^CompletionType)(NSError *error, NSArray * messages); [super dealloc]; } -- (void)start:(void (^)(NSError *error, NSArray * messages))completionBlock +- (void) start:(void (^)(NSError *error, NSArray * messages))completionBlock { _completionBlock = [completionBlock copy]; [self start]; } -- (void)operationCompleted { +- (void) cancel +{ + [_completionBlock release]; + _completionBlock = nil; + [super cancel]; +} + +- (void) operationCompleted +{ if (_completionBlock == NULL) return; -- cgit v1.2.3