tags 455589 + patch
stop

Looking through the recent revision history for mksquashfs.c in the 
upstream CVS, changeset 1.47 of /squashfs/squashfs-tools/mksquashfs.c:
        
http://squashfs.cvs.sourceforge.net/squashfs/squashfs/squashfs-tools/mksquashfs.c?r1=1.46&r2=1.47&view=patch
caught my eyes. Applying it to 1:3.3-1 succeeds and fixes the previously 
mentioned regression in mksquashfs:

[EMAIL PROTECTED]:/tmp/pkg/CHROOT-i386$ cat /proc/version
Linux version 2.6.23.9-slh64-smp-15 ([EMAIL PROTECTED]) (gcc version 4.2.3 
20071123 (prerelease) (Debian 4.2.2-4)) #1 SMP PREEMPT Fri Dec 7 01:38:56 CET 
2007

[EMAIL PROTECTED]:/tmp/pkg/CHROOT-i386$ dpkg -l | grep squashfs-tools
ii  squashfs-tools                                     1:3.3-1+c0.sidux.1       
            Tool to create and append to squashfs filesystems

[EMAIL PROTECTED]:/tmp/pkg/CHROOT-i386$ mksquashfs . 
../squashfs-tools_3.3-1+c0.sidux.1_amd64.lzma.squashfs -no-progress -info
Parallel mksquashfs: Using 2 processors
Creating little endian 3.1 filesystem on 
../squashfs-tools_3.3-1+c0.sidux.1_amd64.lzma.squashfs, block size 131072.
lzmadic 131072
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/abzeichen.wav, 
uncompressed size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/auge.wav, uncompressed 
size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/augenbraue.wav, 
uncompressed size 81274 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/brille.wav, uncompressed 
size 63044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/fliege.wav, uncompressed 
size 71158 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/haare.wav, uncompressed 
size 49122 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/hut.wav, uncompressed 
size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/ohr.wav, uncompressed 
size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/ohrring.wav, 
uncompressed size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/schnurrbart.wav, 
uncompressed size 190076 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/uhr.wav, uncompressed 
size 57198 bytes
mksquashfs: directory ./usr/share/apps/ktuberling/sounds/de inode 0x1b8
mksquashfs: directory ./usr/share/apps/ktuberling/sounds inode 0x1d4
mksquashfs: directory ./usr/share/apps/ktuberling inode 0x1f0
mksquashfs: directory ./usr/share/apps inode 0x20c
mksquashfs: file ./usr/share/hplip/installer/__init__.py, uncompressed size 799 
bytes
mksquashfs: file ./usr/share/hplip/installer/core_install.py, uncompressed size 
49651 bytes
mksquashfs: file ./usr/share/hplip/installer/dcheck.py, uncompressed size 5906 
bytes
mksquashfs: file ./usr/share/hplip/installer/distros.dat, uncompressed size 
58642 bytes
mksquashfs: directory ./usr/share/hplip/installer inode 0x2a8
mksquashfs: file ./usr/share/hplip/scan/__init__.py, uncompressed size 799 
bytes DUPLICATE
mksquashfs: file ./usr/share/hplip/scan/sane.py, uncompressed size 21634 bytes
mksquashfs: directory ./usr/share/hplip/scan inode 0x304
mksquashfs: directory ./usr/share/hplip inode 0x320
mksquashfs: directory ./usr/share inode 0x33c
mksquashfs: directory ./usr inode 0x358
mksquashfs: directory . inode 0x374

Exportable Little endian filesystem, data block size 131072, compressed data, 
compressed metadata, compressed fragments, duplicates are removed
lzmadic 131072
Filesystem size 582.26 Kbytes (0.57 Mbytes)
        20.88% of uncompressed filesystem size (2789.07 Kbytes)
Inode table size 375 bytes (0.37 Kbytes)
        41.03% of uncompressed inode table size (914 bytes)
Directory table size 321 bytes (0.31 Kbytes)
        72.13% of uncompressed directory table size (445 bytes)
Number of duplicate files found 1
Number of inodes 27
Number of files 17
Number of fragments 5
Number of symbolic links  0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 10
Number of uids 1
        slh (1000)
Number of gids 0

[EMAIL PROTECTED]:/tmp/pkg/CHROOT-i386$ mksquashfs . 
../squashfs-tools_3.3-1+c0.sidux.1_amd64.zlib.squashfs -no-progress -info 
-nolzma
Parallel mksquashfs: Using 2 processors
Creating little endian 3.1 filesystem on 
../squashfs-tools_3.3-1+c0.sidux.1_amd64.zlib.squashfs, block size 131072.
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/abzeichen.wav, 
uncompressed size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/auge.wav, uncompressed 
size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/augenbraue.wav, 
uncompressed size 81274 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/brille.wav, uncompressed 
size 63044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/fliege.wav, uncompressed 
size 71158 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/haare.wav, uncompressed 
size 49122 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/hut.wav, uncompressed 
size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/ohr.wav, uncompressed 
size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/ohrring.wav, 
uncompressed size 441044 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/schnurrbart.wav, 
uncompressed size 190076 bytes
mksquashfs: file ./usr/share/apps/ktuberling/sounds/de/uhr.wav, uncompressed 
size 57198 bytes
mksquashfs: directory ./usr/share/apps/ktuberling/sounds/de inode 0x1b8
mksquashfs: directory ./usr/share/apps/ktuberling/sounds inode 0x1d4
mksquashfs: directory ./usr/share/apps/ktuberling inode 0x1f0
mksquashfs: directory ./usr/share/apps inode 0x20c
mksquashfs: file ./usr/share/hplip/installer/__init__.py, uncompressed size 799 
bytes
mksquashfs: file ./usr/share/hplip/installer/core_install.py, uncompressed size 
49651 bytes
mksquashfs: file ./usr/share/hplip/installer/dcheck.py, uncompressed size 5906 
bytes
mksquashfs: file ./usr/share/hplip/installer/distros.dat, uncompressed size 
58642 bytes
mksquashfs: directory ./usr/share/hplip/installer inode 0x2a8
mksquashfs: file ./usr/share/hplip/scan/__init__.py, uncompressed size 799 
bytes DUPLICATE
mksquashfs: file ./usr/share/hplip/scan/sane.py, uncompressed size 21634 bytes
mksquashfs: directory ./usr/share/hplip/scan inode 0x304
mksquashfs: directory ./usr/share/hplip inode 0x320
mksquashfs: directory ./usr/share inode 0x33c
mksquashfs: directory ./usr inode 0x358
mksquashfs: directory . inode 0x374

Exportable Little endian filesystem, data block size 131072, compressed data, 
compressed metadata, compressed fragments, duplicates are removed
Filesystem size 582.26 Kbytes (0.57 Mbytes)
        20.88% of uncompressed filesystem size (2789.07 Kbytes)
Inode table size 375 bytes (0.37 Kbytes)
        41.03% of uncompressed inode table size (914 bytes)
Directory table size 321 bytes (0.31 Kbytes)
        72.13% of uncompressed directory table size (445 bytes)
Number of duplicate files found 1
Number of inodes 27
Number of files 17
Number of fragments 5
Number of symbolic links  0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 10
Number of uids 1
        slh (1000)
Number of gids 0
[EMAIL PROTECTED]:/tmp/pkg/CHROOT-i386$

Regards
        Stefan Lippers-Hollmann
--- a/squashfs-tools/mksquashfs.c	2007/11/14 10:54:45	1.46
+++ b/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 {

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to