Apply revision 1.10 from php repository by pajoye (slightly modified):
- #7658, adding file to zip causes corruption when the bit3 is set
         (crc, size and comp size stored in data descriptor)

--HG--
branch : HEAD
diff --git a/lib/zip_close.c b/lib/zip_close.c
index 668025e..cc48894 100644
--- a/lib/zip_close.c
+++ b/lib/zip_close.c
@@ -1,5 +1,5 @@
 /*
-  $NiH: zip_close.c,v 1.60 2006/05/09 17:21:47 wiz Exp $
+  $NiH: zip_close.c,v 1.61 2006/05/18 23:11:16 dillo Exp $
 
   zip_close.c -- close zip archive and update changes
   Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner
@@ -140,6 +140,12 @@
 		error = 1;
 		break;
 	    }
+	    if (de.bitflags & ZIP_GPBF_DATA_DESCRIPTOR) {
+		de.crc = za->cdir->entry[i].crc;
+		de.comp_size = za->cdir->entry[i].comp_size;
+		de.uncomp_size = za->cdir->entry[i].uncomp_size;
+		de.bitflags &= ~ZIP_GPBF_DATA_DESCRIPTOR;
+	    }
 	    memcpy(cd->entry+j, za->cdir->entry+i, sizeof(cd->entry[j]));
 	}