From 04f83112f6a84d5f572921990adf4b122e15d377 Mon Sep 17 00:00:00 2001 From: Jake Farrell Date: Sat, 2 Mar 2013 22:51:55 -0500 Subject: [PATCH] Thrift-1264:TSocketClient is queried by run loop after deallocation in Cocoa Client: cocoa Patch: Jan Ruth Fixes TSocketClient not deallocated correctly. --- lib/cocoa/src/transport/TSocketClient.m | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) 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 -- 2.17.1