The R Project SVN R

Rev

Rev 49813 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 49813 Rev 53508
Line 36... Line 36...
36
 
36
 
37
	// Verify the CRC32 so we can distinguish between corrupt
37
	// Verify the CRC32 so we can distinguish between corrupt
38
	// and unsupported files.
38
	// and unsupported files.
39
	const uint32_t crc = lzma_crc32(in + sizeof(lzma_header_magic),
39
	const uint32_t crc = lzma_crc32(in + sizeof(lzma_header_magic),
40
			LZMA_STREAM_FLAGS_SIZE, 0);
40
			LZMA_STREAM_FLAGS_SIZE, 0);
41
	if (crc != integer_read_32(in + sizeof(lzma_header_magic)
41
	if (crc != unaligned_read32le(in + sizeof(lzma_header_magic)
42
			+ LZMA_STREAM_FLAGS_SIZE))
42
			+ LZMA_STREAM_FLAGS_SIZE))
43
		return LZMA_DATA_ERROR;
43
		return LZMA_DATA_ERROR;
44
 
44
 
45
	// Stream Flags
45
	// Stream Flags
46
	if (stream_flags_decode(options, in + sizeof(lzma_header_magic)))
46
	if (stream_flags_decode(options, in + sizeof(lzma_header_magic)))
Line 65... Line 65...
65
		return LZMA_FORMAT_ERROR;
65
		return LZMA_FORMAT_ERROR;
66
 
66
 
67
	// CRC32
67
	// CRC32
68
	const uint32_t crc = lzma_crc32(in + sizeof(uint32_t),
68
	const uint32_t crc = lzma_crc32(in + sizeof(uint32_t),
69
			sizeof(uint32_t) + LZMA_STREAM_FLAGS_SIZE, 0);
69
			sizeof(uint32_t) + LZMA_STREAM_FLAGS_SIZE, 0);
70
	if (crc != integer_read_32(in))
70
	if (crc != unaligned_read32le(in))
71
		return LZMA_DATA_ERROR;
71
		return LZMA_DATA_ERROR;
72
 
72
 
73
	// Stream Flags
73
	// Stream Flags
74
	if (stream_flags_decode(options, in + sizeof(uint32_t) * 2))
74
	if (stream_flags_decode(options, in + sizeof(uint32_t) * 2))
75
		return LZMA_OPTIONS_ERROR;
75
		return LZMA_OPTIONS_ERROR;
76
 
76
 
77
	// Backward Size
77
	// Backward Size
78
	options->backward_size = integer_read_32(in + sizeof(uint32_t));
78
	options->backward_size = unaligned_read32le(in + sizeof(uint32_t));
79
	options->backward_size = (options->backward_size + 1) * 4;
79
	options->backward_size = (options->backward_size + 1) * 4;
80
 
80
 
81
	return LZMA_OK;
81
	return LZMA_OK;
82
}
82
}