diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-03-18 03:13:25 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-03-18 03:13:25 +0000 |
commit | c0183e6e0d0ad0b60b8891cd0a1eeabf3406805c (patch) | |
tree | 0ffc01e67f6d85005086426d375471d2b139e426 | |
parent | 6aa7696e280181cd87f7569ce65696b760dca891 (diff) | |
download | busybox-w32-c0183e6e0d0ad0b60b8891cd0a1eeabf3406805c.tar.gz busybox-w32-c0183e6e0d0ad0b60b8891cd0a1eeabf3406805c.tar.bz2 busybox-w32-c0183e6e0d0ad0b60b8891cd0a1eeabf3406805c.zip |
unlzma: shrink by Pascal Bellard <pascal.bellard AT ads-lu.com>
-rw-r--r-- | archival/libunarchive/decompress_unlzma.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/archival/libunarchive/decompress_unlzma.c b/archival/libunarchive/decompress_unlzma.c index aea0c8d94..5fb7eaee0 100644 --- a/archival/libunarchive/decompress_unlzma.c +++ b/archival/libunarchive/decompress_unlzma.c | |||
@@ -324,6 +324,7 @@ unpack_lzma_stream(int src_fd, int dst_fd) | |||
324 | 324 | ||
325 | previous_byte = (uint8_t) mi; | 325 | previous_byte = (uint8_t) mi; |
326 | #if ENABLE_FEATURE_LZMA_FAST | 326 | #if ENABLE_FEATURE_LZMA_FAST |
327 | one_byte1: | ||
327 | buffer[buffer_pos++] = previous_byte; | 328 | buffer[buffer_pos++] = previous_byte; |
328 | if (buffer_pos == header.dict_size) { | 329 | if (buffer_pos == header.dict_size) { |
329 | buffer_pos = 0; | 330 | buffer_pos = 0; |
@@ -334,7 +335,7 @@ unpack_lzma_stream(int src_fd, int dst_fd) | |||
334 | } | 335 | } |
335 | #else | 336 | #else |
336 | len = 1; | 337 | len = 1; |
337 | goto one_byte; | 338 | goto one_byte2; |
338 | #endif | 339 | #endif |
339 | } else { | 340 | } else { |
340 | int offset; | 341 | int offset; |
@@ -367,15 +368,7 @@ unpack_lzma_stream(int src_fd, int dst_fd) | |||
367 | while (pos >= header.dict_size) | 368 | while (pos >= header.dict_size) |
368 | pos += header.dict_size; | 369 | pos += header.dict_size; |
369 | previous_byte = buffer[pos]; | 370 | previous_byte = buffer[pos]; |
370 | buffer[buffer_pos++] = previous_byte; | 371 | goto one_byte1; |
371 | if (buffer_pos == header.dict_size) { | ||
372 | buffer_pos = 0; | ||
373 | global_pos += header.dict_size; | ||
374 | if (full_write(dst_fd, buffer, header.dict_size) != header.dict_size) | ||
375 | goto bad; | ||
376 | USE_DESKTOP(total_written += header.dict_size;) | ||
377 | } | ||
378 | continue; | ||
379 | #else | 372 | #else |
380 | len = 1; | 373 | len = 1; |
381 | goto string; | 374 | goto string; |
@@ -482,7 +475,7 @@ unpack_lzma_stream(int src_fd, int dst_fd) | |||
482 | while (pos >= header.dict_size) | 475 | while (pos >= header.dict_size) |
483 | pos += header.dict_size; | 476 | pos += header.dict_size; |
484 | previous_byte = buffer[pos]; | 477 | previous_byte = buffer[pos]; |
485 | SKIP_FEATURE_LZMA_FAST(one_byte:) | 478 | SKIP_FEATURE_LZMA_FAST(one_byte2:) |
486 | buffer[buffer_pos++] = previous_byte; | 479 | buffer[buffer_pos++] = previous_byte; |
487 | if (buffer_pos == header.dict_size) { | 480 | if (buffer_pos == header.dict_size) { |
488 | buffer_pos = 0; | 481 | buffer_pos = 0; |