@@ -44,11 +44,11 @@ OF_DIRECT_MEMBERS @interface OFLHAArchiveFileReadStream: OFStream { OFStream *_stream, *_decompressedStream; OFLHAArchiveEntry *_entry; - uint32_t _toRead, _bytesConsumed; + unsigned long long _toRead; uint16_t _CRC16; bool _atEndOfStream, _skipped; } - (instancetype)of_initWithStream: (OFStream *)stream @@ -331,11 +331,11 @@ if (_stream.atEndOfStream && !_decompressedStream.hasDataInReadBuffer) @throw [OFTruncatedDataException exception]; if (length > _toRead) - length = _toRead; + length = (size_t)_toRead; ret = [_decompressedStream readIntoBuffer: buffer length: length]; _toRead -= ret; _CRC16 = OFCRC16(_CRC16, buffer, ret); @@ -371,11 +371,11 @@ } - (void)of_skip { OFStream *stream; - uint32_t toRead; + unsigned long long toRead; if (_stream == nil || _skipped) return; stream = _stream; @@ -396,22 +396,23 @@ stream = _stream; } if ([stream isKindOfClass: [OFSeekableStream class]] && - (sizeof(OFFileOffset) > 4 || toRead < INT32_MAX)) + (sizeof(OFFileOffset) > 4 || toRead != (OFFileOffset)toRead)) [(OFSeekableStream *)stream seekToOffset: (OFFileOffset)toRead whence: SEEK_CUR]; else { while (toRead > 0) { char buffer[512]; - size_t min = toRead; + unsigned long long min = toRead; if (min > 512) min = 512; - toRead -= [stream readIntoBuffer: buffer length: min]; + toRead -= [stream readIntoBuffer: buffer + length: (size_t)min]; } } _toRead = 0; _skipped = true;