1
From: Bjoern Ricks <bjoern.ricks@intevation.de>
2
Description: fix corruption in zip files caused by wrong encoding of umlauts
3
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=563942
5
Last-Update: 2010-08-07
9
@@ -954,8 +954,8 @@ bool KZip::closeArchive()
10
buffer[ 26 ] = char(mysize >> 16);
11
buffer[ 27 ] = char(mysize >> 24);
13
- buffer[ 28 ] = char(it.current()->path().length()); // filename length
14
- buffer[ 29 ] = char(it.current()->path().length() >> 8);
15
+ buffer[ 28 ] = char(path.length()); // filename length
16
+ buffer[ 29 ] = char(path.length() >> 8);
18
buffer[ 30 ] = char(extra_field_len);
19
buffer[ 31 ] = char(extra_field_len >> 8);
20
@@ -1280,9 +1280,10 @@ bool KZip::doneWriting( uint size )
21
if ( d->m_extraField == ModificationTime )
22
extra_field_len = 17; // value also used in doneWriting()
24
+ const QCString encodedName = QFile::encodeName(d->m_currentFile->path());
25
int csize = device()->at() -
26
d->m_currentFile->headerStart() - 30 -
27
- d->m_currentFile->path().length() - extra_field_len;
28
+ encodedName.length() - extra_field_len;
29
d->m_currentFile->setCompressedSize(csize);
30
//kdDebug(7040) << "usize: " << d->m_currentFile->size() << endl;
31
//kdDebug(7040) << "csize: " << d->m_currentFile->compressedSize() << endl;