Browse Source

* patch from Dmitry for bug #7604, fixing the CRC problems.

git-svn-id: trunk@15864 -
marco 15 years ago
parent
commit
7119ebd599
1 changed files with 11 additions and 1 deletions
  1. 11 1
      packages/unzip/src/unzip51g.pp

+ 11 - 1
packages/unzip/src/unzip51g.pp

@@ -2410,8 +2410,18 @@ BEGIN
     originalcrc := b AND $FFFF;
     originalcrc := b AND $FFFF;
     dumpbits ( 16 );
     dumpbits ( 16 );
     needbits ( 16 );
     needbits ( 16 );
-    originalcrc := ( b AND $FFFF ) SHL 16;
+    originalcrc := originalcrc OR LongWord(( b AND $FFFF ) SHL 16);
     dumpbits ( 16 );
     dumpbits ( 16 );
+
+    IF originalcrc = $08074b50 THEN BEGIN
+      { skiping possible $08074b50 data descriptor signature. see PKWARE APPNOTE.txt }
+      needbits ( 16 );
+      originalcrc := b AND $FFFF;
+      dumpbits ( 16 );
+      needbits ( 16 );
+      originalcrc := originalcrc OR LongWord(( b AND $FFFF ) SHL 16);
+      dumpbits ( 16 );
+    END;
   END;
   END;
 
 
   close ( infile );
   close ( infile );