Well, I have no idea what I'm doing wrong. So I wrote something what looks more reasonable than original Geller's patch to me. Am I really only one who cares that apt is corrupting package it downloads ? This time tetex-base_3.0.orig.tar.gz is corrupted on redownload as its last byte is CR (0D) (it is replaced with 'H', see previous messages in this bugreport and bug 290694).
Can sombody at least tell me why this important data corrupting bug is ignored for more than year? Thanks, Petr Vandrovec diff -urN apt-0.6.42/debian/changelog apt-0.6.42.fix/debian/changelog --- apt-0.6.42/debian/changelog 2005-10-20 11:33:43.000000000 +0200 +++ apt-0.6.42.fix/debian/changelog 2005-10-22 16:59:15.000000000 +0200 @@ -1,3 +1,9 @@ +apt (0.6.42.1) unstable; urgency=low + + * Fix corruption of downloaded packages (closes: #280844, #290694). + + -- Petr Vandrovec <[EMAIL PROTECTED]> Sat, 22 Oct 2005 17:00:00 +0200 + apt (0.6.42) unstable; urgency=low * apt-pkg/cdrom.cc: diff -urN apt-0.6.42/methods/http.cc apt-0.6.42.fix/methods/http.cc --- apt-0.6.42/methods/http.cc 2005-10-19 21:19:09.000000000 +0200 +++ apt-0.6.42.fix/methods/http.cc 2005-10-22 16:58:15.000000000 +0200 @@ -204,28 +204,23 @@ if (Buf[I%Size] != '\n') continue; ++I; - if (I < InP && Buf[I%Size] == '\r') - ++I; if (Single == false) { - if (Buf[I%Size] != '\n') - continue; - ++I; if (I < InP && Buf[I%Size] == '\r') ++I; + if (I >= InP || Buf[I%Size] != '\n') + continue; + ++I; } - if (I > InP) - I = InP; - Data = ""; while (OutP < I) { unsigned long Sz = LeftWrite(); if (Sz == 0) return false; - if (I - OutP < LeftWrite()) + if (I - OutP < Sz) Sz = I - OutP; Data += string((char *)(Buf + (OutP%Size)),Sz); OutP += Sz; -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]