16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#include "config.h"
#include <errno.h>
#import "OFZIPArchive.h"
#import "OFZIPArchiveEntry.h"
#import "OFZIPArchiveEntry+Private.h"
#import "OFData.h"
#import "OFArray.h"
#import "OFDictionary.h"
#import "OFStream.h"
#import "OFSeekableStream.h"
#ifdef OF_HAVE_FILES
# import "OFFile.h"
#endif
#import "OFInflateStream.h"
#import "OFInflate64Stream.h"
#import "crc32.h"
#import "OFChecksumMismatchException.h"
#import "OFInvalidArgumentException.h"
#import "OFInvalidFormatException.h"
#import "OFNotImplementedException.h"
#import "OFNotOpenException.h"
#import "OFOpenItemFailedException.h"
#import "OFOutOfRangeException.h"
|
>
<
<
|
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#include "config.h"
#include <errno.h>
#import "OFZIPArchive.h"
#import "OFZIPArchiveEntry.h"
#import "OFZIPArchiveEntry+Private.h"
#import "OFCRC32.h"
#import "OFData.h"
#import "OFArray.h"
#import "OFDictionary.h"
#import "OFStream.h"
#import "OFSeekableStream.h"
#ifdef OF_HAVE_FILES
# import "OFFile.h"
#endif
#import "OFInflateStream.h"
#import "OFInflate64Stream.h"
#import "OFChecksumMismatchException.h"
#import "OFInvalidArgumentException.h"
#import "OFInvalidFormatException.h"
#import "OFNotImplementedException.h"
#import "OFNotOpenException.h"
#import "OFOpenItemFailedException.h"
#import "OFOutOfRangeException.h"
|
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
|
if ((uint64_t)length > _toRead)
length = (size_t)_toRead;
ret = [_decompressedStream readIntoBuffer: buffer length: length];
_toRead -= ret;
_CRC32 = of_crc32(_CRC32, buffer, ret);
if (_toRead == 0) {
_atEndOfStream = true;
if (~_CRC32 != _entry.CRC32) {
OFString *actualChecksum = [OFString stringWithFormat:
@"%08" PRIX32, ~_CRC32];
|
|
|
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
|
if ((uint64_t)length > _toRead)
length = (size_t)_toRead;
ret = [_decompressedStream readIntoBuffer: buffer length: length];
_toRead -= ret;
_CRC32 = OFCRC32(_CRC32, buffer, ret);
if (_toRead == 0) {
_atEndOfStream = true;
if (~_CRC32 != _entry.CRC32) {
OFString *actualChecksum = [OFString stringWithFormat:
@"%08" PRIX32, ~_CRC32];
|
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
|
if (INT64_MAX - _bytesWritten < (int64_t)length)
@throw [OFOutOfRangeException exception];
bytesWritten = [_stream writeBuffer: buffer length: length];
_bytesWritten += (int64_t)bytesWritten;
_CRC32 = of_crc32(_CRC32, buffer, length);
return bytesWritten;
}
- (void)close
{
if (_stream == nil)
|
|
|
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
|
if (INT64_MAX - _bytesWritten < (int64_t)length)
@throw [OFOutOfRangeException exception];
bytesWritten = [_stream writeBuffer: buffer length: length];
_bytesWritten += (int64_t)bytesWritten;
_CRC32 = OFCRC32(_CRC32, buffer, length);
return bytesWritten;
}
- (void)close
{
if (_stream == nil)
|