Sophie

Sophie

distrib > Mandriva > 2009.0 > x86_64 > by-pkgid > 87633ba174377b3c8f9fa46d9df770a6 > files > 6

squashfs-tools-3.3-4mdv2009.0.src.rpm

--- 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 {