--- squashfs-tools/mksquashfs.c 2007/11/14 10:54:45 1.46 +++ squashfs-tools/mksquashfs.c 2007/11/26 02:16:45 1.47 @@ -1578,7 +1578,7 @@ char *buffer; int block; - if(memcmp(*block_list, dupl_ptr->block_list, blocks) != 0) + if(memcmp(*block_list, dupl_ptr->block_list, blocks * sizeof(unsigned int)) != 0) continue; if(checksum_flag == FALSE) { @@ -2153,6 +2153,8 @@ } block_list[block] = read_buffer->c_byte; + buffer_list[block].start = bytes; + buffer_list[block].size = read_buffer->size; if(read_buffer->c_byte) { read_buffer->block = bytes; @@ -2167,8 +2169,6 @@ buffer_list[block].read_buffer = NULL; alloc_free(read_buffer); } - buffer_list[block].start = read_buffer->block; - buffer_list[block].size = read_buffer->size; progress_bar(++cur_uncompressed, estimated_uncompressed, columns); } @@ -2188,7 +2188,8 @@ if(dupl_ptr) { *duplicate_file = FALSE; for(block = thresh; block < blocks; block ++) - queue_put(to_writer, buffer_list[block].read_buffer); + if(buffer_list[block].read_buffer) + queue_put(to_writer, buffer_list[block].read_buffer); fragment = get_and_fill_fragment(read_buffer); dupl_ptr->fragment = fragment; } else {