end = window_pos + block_size;
while (window_pos < end) {
ret = read_huffsym_using_maintree(istream, tables,
&main_element);
if (ret != 0)
end = window_pos + block_size;
while (window_pos < end) {
ret = read_huffsym_using_maintree(istream, tables,
&main_element);
if (ret != 0)
if (main_element < LZX_NUM_CHARS) {
/* literal: 0 to LZX_NUM_CHARS - 1 */
window[window_pos++] = main_element;
} else {
/* match: LZX_NUM_CHARS to LZX_MAINTREE_NUM_SYMBOLS - 1 */
if (main_element < LZX_NUM_CHARS) {
/* literal: 0 to LZX_NUM_CHARS - 1 */
window[window_pos++] = main_element;
} else {
/* match: LZX_NUM_CHARS to LZX_MAINTREE_NUM_SYMBOLS - 1 */
LZX_DEBUG("LZX_BLOCKTYPE_UNCOMPRESSED");
if (istream.data_bytes_left < block_size) {
ERROR("Unexpected end of input when "
LZX_DEBUG("LZX_BLOCKTYPE_UNCOMPRESSED");
if (istream.data_bytes_left < block_size) {
ERROR("Unexpected end of input when "
"(only have %u bytes left)",
block_size, istream.data_bytes_left);
return -1;
"(only have %u bytes left)",
block_size, istream.data_bytes_left);
return -1;