Skip to content
Snippets Groups Projects
  1. May 31, 2015
  2. May 24, 2015
    • Scott Vokes's avatar
      Change MIN_LOOKAHEAD_BITS from 2 to 3 to prevent ambiguity. · 15ebaddc
      Scott Vokes authored
      As reported by @unixdj, there is a case where a few bytes can be
      dropped from the end of the bytestream when used with a window_sz2
      of 4 and lookahead_sz2 of 2 (-w 4 -l 2):
      
          $ echo -n aaaa | ./heatshrink -e -w4 -l2 | ./heatshrink -d -w4 -l2
          a   # should be "aaaa"
      
      While st_check_for_input can treat 7 bits as sufficient input when
      -w is 4 and -l is 2, that creates a corresponding issue where 1
      spillover bit from the previous byte leads to filler of 0b000 0000,
      which is interpreted as a marker to repeat (0b0) from 1 byte back
      (0b0000) for 1 byte (0b00), leading to a duplication of the last
      byte of input. Using a w,l pair where w+l < 7 leads to trailing
      bits that are ambiguous, so raise the minimum lookahead bits to 3.
      
      This problem does not occur with -w 4 -l 3, or any other valid config.
      15ebaddc
    • Scott Vokes's avatar
      Make all theft tests vary window and lookahead size; refactor tests. · 25c18261
      Scott Vokes authored
      This is to ensure the full state space is explored. malloc (and re-use,
      after zeroing) large in-memory buffers for use in the tests, as these
      will not potentially fill the way smaller stack-allocated ones can.
      25c18261
    • Scott Vokes's avatar
      Update to v1.0.0 of greatest. · 553c7332
      Scott Vokes authored
      553c7332
  3. May 14, 2015
  4. May 11, 2015
  5. May 08, 2015
  6. Jan 03, 2015
  7. Dec 31, 2014
  8. Sep 19, 2014
  9. Jun 26, 2014
  10. Jun 25, 2014
    • Scott Vokes's avatar
      Fix possible state yielding MORE from finish(), but 0 bytes from poll(). · 06d4094c
      Scott Vokes authored
      If the decompression stream was terminated with a 1 bit at exactly the
      byte boundary (perhaps due to decompressing from flash memory and
      sinking erased 0xFF bytes until the end of a flash page), it could end
      up in a state where heatshrink_decoder_finish() would return
      HSDR_FINISH_MORE, but calling heatshrink_decoder_poll would always yield
      0 bytes of output. If _both_ results were not checked, this could lead to
      the code driving them uselessly calling them in a loop.
      
      Added regression test case:
      decoder_should_not_get_stuck_with_finish_yielding_MORE_but_0_bytes_output_from_poll
      
      Resolved by explicitly checking remaining input length in
      heatshrink_decoder_finish in the HSDS_YIELD_LITERAL state, since it is
      not safe to assume that the decompression stream input will be padded
      with 0 bits.
      06d4094c
  11. Mar 25, 2014
  12. Jan 14, 2014
  13. Dec 28, 2013
  14. Dec 21, 2013
  15. Dec 19, 2013
Loading