diff options
Diffstat (limited to 'cpp/src/Ice/ios/StreamConnector.cpp')
-rw-r--r-- | cpp/src/Ice/ios/StreamConnector.cpp | 33 |
1 files changed, 8 insertions, 25 deletions
diff --git a/cpp/src/Ice/ios/StreamConnector.cpp b/cpp/src/Ice/ios/StreamConnector.cpp index 3863e29b63a..e3a19519eca 100644 --- a/cpp/src/Ice/ios/StreamConnector.cpp +++ b/cpp/src/Ice/ios/StreamConnector.cpp @@ -12,6 +12,7 @@ #include "StreamConnector.h" #include <Ice/Network.h> +#include <Ice/UniqueRef.h> #include <Ice/Exception.h> #include <Ice/Properties.h> #include <Ice/NetworkProxy.h> @@ -25,31 +26,13 @@ using namespace IceInternal; TransceiverPtr IceObjC::StreamConnector::connect() { - CFReadStreamRef readStream = nil; - CFWriteStreamRef writeStream = nil; - try - { - CFStringRef h = CFStringCreateWithCString(ICE_NULLPTR, _host.c_str(), kCFStringEncodingUTF8); - CFHostRef host = CFHostCreateWithName(ICE_NULLPTR, h); - CFRelease(h); - CFStreamCreatePairWithSocketToCFHost(ICE_NULLPTR, host, _port, &readStream, &writeStream); - CFRelease(host); - - _instance->setupStreams(readStream, writeStream, false, _host); - return new StreamTransceiver(_instance, readStream, writeStream, _host, _port); - } - catch(const Ice::LocalException& ex) - { - if(readStream) - { - CFRelease(readStream); - } - if(writeStream) - { - CFRelease(writeStream); - } - throw; - } + UniqueRef<CFReadStreamRef> readStream; + UniqueRef<CFWriteStreamRef> writeStream; + UniqueRef<CFStringRef> h(CFStringCreateWithCString(ICE_NULLPTR, _host.c_str(), kCFStringEncodingUTF8)); + UniqueRef<CFHostRef> host(CFHostCreateWithName(ICE_NULLPTR, h.get())); + CFStreamCreatePairWithSocketToCFHost(ICE_NULLPTR, host.get(), _port, &readStream.get(), &writeStream.get()); + _instance->setupStreams(readStream.get(), writeStream.get(), false, _host); + return new StreamTransceiver(_instance, readStream.release(), writeStream.release(), _host, _port); } Short |