@@ -32,10 +32,11 @@ #endif #import "OFStream.h" #import "OFString.h" #import "OFDataArray.h" +#import "OFSystemInfo.h" #import "OFRunLoop.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" #import "OFSetOptionFailedException.h" @@ -512,21 +513,23 @@ } - (OFDataArray*)readDataArrayTillEndOfStream { OFDataArray *dataArray; + size_t pageSize; char *buffer; dataArray = [OFDataArray dataArray]; - buffer = [self allocMemoryWithSize: of_pagesize]; + pageSize = [OFSystemInfo pageSize]; + buffer = [self allocMemoryWithSize: pageSize]; @try { while (![self isAtEndOfStream]) { size_t length; length = [self readIntoBuffer: buffer - length: of_pagesize]; + length: pageSize]; [dataArray addItems: buffer count: length]; } } @finally { [self freeMemory: buffer]; @@ -561,11 +564,11 @@ return ret; } - (OFString*)tryReadLineWithEncoding: (of_string_encoding_t)encoding { - size_t i, bufferLength, retLength; + size_t i, pageSize, bufferLength, retLength; char *retCString, *buffer, *newCache; OFString *ret; /* Look if there's a line or \0 in our cache */ if (!waitingForDelimiter && cache != NULL) { @@ -594,12 +597,13 @@ return ret; } } } - /* Read and see if we get a newline or \0 */ - buffer = [self allocMemoryWithSize: of_pagesize]; + /* Read and see if we got a newline or \0 */ + pageSize = [OFSystemInfo pageSize]; + buffer = [self allocMemoryWithSize: pageSize]; @try { if ([self lowlevelIsAtEndOfStream]) { if (cache == NULL) { waitingForDelimiter = NO; @@ -622,11 +626,11 @@ waitingForDelimiter = NO; return ret; } bufferLength = [self lowlevelReadIntoBuffer: buffer - length: of_pagesize]; + length: pageSize]; /* Look if there's a newline or \0 */ for (i = 0; i < bufferLength; i++) { if OF_UNLIKELY (buffer[i] == '\n' || buffer[i] == '\0') { @@ -763,11 +767,11 @@ - (OFString*)tryReadTillDelimiter: (OFString*)delimiter encoding: (of_string_encoding_t)encoding { const char *delimiterCString; - size_t i, j, delimiterLength, bufferLength, retLength; + size_t i, j, delimiterLength, pageSize, bufferLength, retLength; char *retCString, *buffer, *newCache; OFString *ret; delimiterCString = [delimiter cStringUsingEncoding: encoding]; delimiterLength = [delimiter lengthOfBytesUsingEncoding: encoding]; @@ -807,12 +811,13 @@ return ret; } } } - /* Read and see if we get a delimiter or \0 */ - buffer = [self allocMemoryWithSize: of_pagesize]; + /* Read and see if we got a delimiter or \0 */ + pageSize = [OFSystemInfo pageSize]; + buffer = [self allocMemoryWithSize: pageSize]; @try { if ([self lowlevelIsAtEndOfStream]) { if (cache == NULL) { waitingForDelimiter = NO; @@ -830,11 +835,11 @@ waitingForDelimiter = NO; return ret; } bufferLength = [self lowlevelReadIntoBuffer: buffer - length: of_pagesize]; + length: pageSize]; /* Look if there's a delimiter or \0 */ for (i = 0; i < bufferLength; i++) { if (buffer[i] != delimiterCString[j++]) j = 0;