From 9d38bb4f9482f1802bcadb6d81d8ca4180888c1e Mon Sep 17 00:00:00 2001 From: tifroz Date: Mon, 21 Sep 2015 14:40:24 -0700 Subject: [PATCH] Workaround for Swift2 which apparently fails to retain the completion blocks passed as parameters --- GCDWebServer/Core/GCDWebServerConnection.m | 2 +- GCDWebServer/Core/GCDWebServerResponse.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/GCDWebServer/Core/GCDWebServerConnection.m b/GCDWebServer/Core/GCDWebServerConnection.m index 9ec7df2..d6c369e 100644 --- a/GCDWebServer/Core/GCDWebServerConnection.m +++ b/GCDWebServer/Core/GCDWebServerConnection.m @@ -759,7 +759,7 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) { - (void)processRequest:(GCDWebServerRequest*)request completion:(GCDWebServerCompletionBlock)completion { GWS_LOG_DEBUG(@"Connection on socket %i processing request \"%@ %@\" with %lu bytes body", _socket, _virtualHEAD ? @"HEAD" : _request.method, _request.path, (unsigned long)_bytesRead); @try { - _handler.asyncProcessBlock(request, completion); + _handler.asyncProcessBlock(request, [completion copy]); } @catch (NSException* exception) { GWS_LOG_EXCEPTION(exception); diff --git a/GCDWebServer/Core/GCDWebServerResponse.m b/GCDWebServer/Core/GCDWebServerResponse.m index 740e933..8357ab7 100644 --- a/GCDWebServer/Core/GCDWebServerResponse.m +++ b/GCDWebServer/Core/GCDWebServerResponse.m @@ -242,7 +242,7 @@ - (void)performReadDataWithCompletion:(GCDWebServerBodyReaderCompletionBlock)block { if ([_reader respondsToSelector:@selector(asyncReadDataWithCompletion:)]) { - [_reader asyncReadDataWithCompletion:block]; + [_reader asyncReadDataWithCompletion:[block copy]]; } else { NSError* error = nil; NSData* data = [_reader readData:&error];