aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/pop
diff options
context:
space:
mode:
authorGravatar Hoa V. Dinh <dinh.viet.hoa@gmail.com>2013-07-25 23:09:37 -0700
committerGravatar Hoa V. Dinh <dinh.viet.hoa@gmail.com>2013-07-25 23:09:37 -0700
commitc559c8834773c4d6d78cb0cccc968d2a3477f67a (patch)
treeaa5daeec68ac98f5cee85333ee3fa9baa3d6e2cd /src/objc/pop
parentb27f76a56eebe7e297e9f7c2f00bf3b0eb61d662 (diff)
Fixed memory leak on cancellation in ObjC API
Diffstat (limited to 'src/objc/pop')
-rw-r--r--src/objc/pop/MCOPOPFetchHeaderOperation.mm12
-rw-r--r--src/objc/pop/MCOPOPFetchMessageOperation.mm13
-rw-r--r--src/objc/pop/MCOPOPFetchMessagesOperation.mm12
3 files changed, 31 insertions, 6 deletions
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;