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]

Reply via email to