diff --git a/OHHTTPStubs/Sources/OHHTTPStubs.m b/OHHTTPStubs/Sources/OHHTTPStubs.m index 3b4604b0..2f3cd84d 100644 --- a/OHHTTPStubs/Sources/OHHTTPStubs.m +++ b/OHHTTPStubs/Sources/OHHTTPStubs.m @@ -469,7 +469,7 @@ - (void) streamDataForClient:(id)client timingInfo:timingInfo completion:completion]; }); } else { - uint8_t buffer[chunkSizeToRead]; + uint8_t* buffer = (uint8_t*)malloc(sizeof(uint8_t*)*chunkSizeToRead); NSInteger bytesRead = [inputStream read:buffer maxLength:chunkSizeToRead]; if (bytesRead > 0) { @@ -492,6 +492,7 @@ - (void) streamDataForClient:(id)client completion(inputStream.streamError); } } + free(buffer); } } else diff --git a/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m b/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m index 7155e8f2..2665b5dc 100644 --- a/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m +++ b/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m @@ -126,4 +126,16 @@ -(void)test_LongData_RequestTime1_ResponseTime5 [self _testWithData:testData requestTime:1 responseTime:5]; } +-(void)test_VeryLongData_RequestTime1_ResponseTime0 +{ + static NSUInteger const kDataLength = 609792; + NSMutableData* testData = [NSMutableData dataWithCapacity:kDataLength]; + NSData* chunk = [[NSProcessInfo.processInfo globallyUniqueString] dataUsingEncoding:NSUTF8StringEncoding]; + while(testData.length