`memmove(op, match, sequence.matchLength)` is not the desired behavior.
Overlap is allowed, and handled as if we did `*op++ = *match++`, which
is not how `memmove()` handles overlap.
Only triggered if both of the following conditions are met:
* The match spans extDict & currentPrefixSegment
* `oLitEnd <= oend_w < oLitEnd + length1 < oMatchEnd <= oend`.
These two conditions imply that the block is less than 15 bytes long.
This bug isn't triggered by the streaming API, because it allocates
enough space for the window size + the block size, so there cannot be
a match that is within 8 bytes of the end and overlaps with itself.
It cannot be triggered by the block decompression API because all of
the decompressed data is in the currentPrefixSegment.
Introduced by commit 7158584399
* upstream/dev:
Streaming : dictionary compression on multiple files / segments can correctly provide srcSize into header (when provided) using pledgedSrcSize.
cli : better adaptation to small files
fixed : cli : forgotten mandatory argument
Implemented "command must be followed by argument" protection suggested by @terrelln (#375)
minor refactor for clarity
minor build comment
gmake necessary on *BSD systems.
added error check
added error checking
fixed cmake test
completed change from projects to build
changed projects to build
bumped version number
streaming compression example can handle situations where input buffer size is manually set to a small value.
added comments on buffer sizes guarantees