|
@@ -583,6 +583,8 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
|
|
if (ret != XZ_OK)
|
|
|
return ret;
|
|
|
|
|
|
+ /* Fall through */
|
|
|
+
|
|
|
case SEQ_BLOCK_START:
|
|
|
/* We need one byte of input to continue. */
|
|
|
if (b->in_pos == b->in_size)
|
|
@@ -606,6 +608,8 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
|
|
s->temp.pos = 0;
|
|
|
s->sequence = SEQ_BLOCK_HEADER;
|
|
|
|
|
|
+ /* Fall through */
|
|
|
+
|
|
|
case SEQ_BLOCK_HEADER:
|
|
|
if (!fill_temp(s, b))
|
|
|
return XZ_OK;
|
|
@@ -616,6 +620,8 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
|
|
|
|
|
s->sequence = SEQ_BLOCK_UNCOMPRESS;
|
|
|
|
|
|
+ /* Fall through */
|
|
|
+
|
|
|
case SEQ_BLOCK_UNCOMPRESS:
|
|
|
ret = dec_block(s, b);
|
|
|
if (ret != XZ_STREAM_END)
|
|
@@ -623,6 +629,8 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
|
|
|
|
|
s->sequence = SEQ_BLOCK_PADDING;
|
|
|
|
|
|
+ /* Fall through */
|
|
|
+
|
|
|
case SEQ_BLOCK_PADDING:
|
|
|
/*
|
|
|
* Size of Compressed Data + Block Padding
|
|
@@ -643,6 +651,8 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
|
|
|
|
|
s->sequence = SEQ_BLOCK_CHECK;
|
|
|
|
|
|
+ /* Fall through */
|
|
|
+
|
|
|
case SEQ_BLOCK_CHECK:
|
|
|
if (s->check_type == XZ_CHECK_CRC32) {
|
|
|
ret = crc32_validate(s, b);
|
|
@@ -665,6 +675,8 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
|
|
|
|
|
s->sequence = SEQ_INDEX_PADDING;
|
|
|
|
|
|
+ /* Fall through */
|
|
|
+
|
|
|
case SEQ_INDEX_PADDING:
|
|
|
while ((s->index.size + (b->in_pos - s->in_start))
|
|
|
& 3) {
|
|
@@ -687,6 +699,8 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
|
|
|
|
|
s->sequence = SEQ_INDEX_CRC32;
|
|
|
|
|
|
+ /* Fall through */
|
|
|
+
|
|
|
case SEQ_INDEX_CRC32:
|
|
|
ret = crc32_validate(s, b);
|
|
|
if (ret != XZ_STREAM_END)
|
|
@@ -695,6 +709,8 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
|
|
s->temp.size = STREAM_HEADER_SIZE;
|
|
|
s->sequence = SEQ_STREAM_FOOTER;
|
|
|
|
|
|
+ /* Fall through */
|
|
|
+
|
|
|
case SEQ_STREAM_FOOTER:
|
|
|
if (!fill_temp(s, b))
|
|
|
return XZ_OK;
|