Looks like zip_deflate_internal checks for zip_match_available which is never initialized in case of (zip_compr_level <= 3).
This leads to additional bytes added to compressed data in case of deflate_fast. Some picky decompressors complain about it: optipng or firefox for example.
I fixed it this way:
--- rawdeflate.js.orig 2011-09-09 19:28:45.000000000 +0200
+++ rawdeflate.js 2011-09-09 19:25:14.000000000 +0200
@@ -753,6 +753,7 @@
zip_qhead = null;
zip_outcnt = 0;
zip_outoff = 0;
+ zip_match_available = 0;
if(zip_compr_level <= 3)
@@ -762,7 +763,6 @@
zip_match_length = zip_MIN_MATCH - 1;
- zip_match_available = 0;
zip_complete = false;
Thanks for your fix! This really saved my day over here.
Dankogai should have patched it.
Thank you. Patched accordingly.