From: Jake Farrell Date: Sun, 3 Mar 2013 03:51:55 +0000 (-0500) Subject: Thrift-1264:TSocketClient is queried by run loop after deallocation in Cocoa X-Git-Tag: 0.9.1~188 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=04f83112f6a84d5f572921990adf4b122e15d377;p=common%2Fthrift.git Thrift-1264:TSocketClient is queried by run loop after deallocation in Cocoa Client: cocoa Patch: Jan Ruth Fixes TSocketClient not deallocated correctly. --- diff --git a/lib/cocoa/src/transport/TSocketClient.m b/lib/cocoa/src/transport/TSocketClient.m index 256ecf3b..1a7eea86 100644 --- a/lib/cocoa/src/transport/TSocketClient.m +++ b/lib/cocoa/src/transport/TSocketClient.m @@ -25,13 +25,20 @@ #import #endif +@interface TSocketClient () +{ + NSInputStream * inputStream; + NSOutputStream * outputStream; +} +@end + @implementation TSocketClient - (id) initWithHostname: (NSString *) hostname port: (int) port { - NSInputStream * inputStream = NULL; - NSOutputStream * outputStream = NULL; + inputStream = NULL; + outputStream = NULL; CFReadStreamRef readStream = NULL; CFWriteStreamRef writeStream = NULL; CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (bridge_stub CFStringRef)hostname, port, &readStream, &writeStream); @@ -59,6 +66,20 @@ return self; } +-(void)dealloc +{ + [inputStream close]; + [inputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + [inputStream setDelegate:nil]; + [inputStream release_stub]; + + [outputStream close]; + [outputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + [outputStream setDelegate:nil]; + [outputStream release_stub]; + [super dealloc_stub]; +} + @end