PATCH: DeflaterOutputStream.java

Carlos Valiente kaffe@rufus.w3.org
Sun, 6 May 2001 23:21:57 +0200



--------------Boundary-00=_LCNXSHABT0SSOFL3Q23N
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Here's another fix for a problem regarding the creation of zip files. Kaffe 
fails to create compressed zip files. apart from the diff, I have included a 
small test program to reproduce the bug and test the fix.


--------------Boundary-00=_LCNXSHABT0SSOFL3Q23N
Content-Type: text/x-c++;
  charset="iso-8859-1";
  name="DeflaterOutputStream.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="DeflaterOutputStream.diff"

SW5kZXg6IERlZmxhdGVyT3V0cHV0U3RyZWFtLmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9rYWZmZS9rYWZmZS9saWJyYXJpZXMvamF2YWxpYi9qYXZhL3V0aWwvemlwL0RlZmxhdGVyT3V0
cHV0U3RyZWFtLmphdmEsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC11IC1yMS40IERl
ZmxhdGVyT3V0cHV0U3RyZWFtLmphdmEKLS0tIERlZmxhdGVyT3V0cHV0U3RyZWFtLmphdmEJMjAw
MS8wMy8wNyAwMzoyNzo0MwkxLjQKKysrIERlZmxhdGVyT3V0cHV0U3RyZWFtLmphdmEJMjAwMS8w
NS8wNiAyMToyMjozNQpAQCAtNjIsOCArNjIsMTEgQEAKIHB1YmxpYyB2b2lkIHdyaXRlKGJ5dGUg
YltdLCBpbnQgb2ZmLCBpbnQgbGVuKSB0aHJvd3MgSU9FeGNlcHRpb24gewogCWlmIChvZmYgPCAw
IHx8IGxlbiA8IDAgfHwgb2ZmICsgbGVuID4gYi5sZW5ndGgpCiAJCXRocm93IG5ldyBJbmRleE91
dE9mQm91bmRzRXhjZXB0aW9uKCk7Ci0JZGVmLnNldElucHV0KGIsIG9mZiwgbGVuKTsKLQlkZWZs
YXRlKCk7CisJCisJaWYobGVuICE9IDApIHsKKwkJZGVmLnNldElucHV0KGIsIG9mZiwgbGVuKTsK
KwkJZGVmbGF0ZSgpOworCX0KIH0KIAogcHVibGljIHZvaWQgd3JpdGUoaW50IGIpIHRocm93cyBJ
T0V4Y2VwdGlvbiB7Cg==

--------------Boundary-00=_LCNXSHABT0SSOFL3Q23N
Content-Type: text/x-java;
  charset="iso-8859-1";
  name="ZipTest.java"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ZipTest.java"

aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC56aXAuKjsKCgpwdWJsaWMgY2xhc3Mg
WmlwVGVzdCB7CgogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3Mp
CgkgICAgICAgIHRocm93cyBFeGNlcHRpb24KCXsKCgkgICAgICAgIGJ1aWxkWmlwKCJ6aXB0ZXN0
MS56aXAiLCBmYWxzZSk7CgkJYnVpbGRaaXAoInppcHRlc3QyLnppcCIsIHRydWUpOwoJfQoKCXN0
YXRpYyB2b2lkIGJ1aWxkWmlwKFN0cmluZyB6aXBGaWxlLCBib29sZWFuIGNvbXByZXNzKQoJICAg
ICAgICB0aHJvd3MgRXhjZXB0aW9uCgl7CgoJCVN5c3RlbS5vdXQucHJpbnRsbigiKioqKiIpOwoJ
ICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJDcmVhdGluZyAiICsgemlwRmlsZSArICIgKCIpOwoJ
CWlmKCFjb21wcmVzcykKCQkgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoInVuIik7CiAgICAgICAg
ICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNvbXByZXNzZWQpIik7CgoJICAgICAgICBaaXBP
dXRwdXRTdHJlYW0gek91dCA9IG5ldyBaaXBPdXRwdXRTdHJlYW0obmV3IEZpbGVPdXRwdXRTdHJl
YW0oemlwRmlsZSkpOwoJCWlmKGNvbXByZXNzKQoJCSAgICAgICAgek91dC5zZXRNZXRob2QoWmlw
T3V0cHV0U3RyZWFtLkRFRkxBVEVEKTsKICAgICAgICAgICAgICAgIGVsc2UKCQkgICAgICAgIHpP
dXQuc2V0TWV0aG9kKFppcE91dHB1dFN0cmVhbS5TVE9SRUQpOwoKICAgICAgICAgICAgICAgIGFk
ZEZpbGUoek91dCwgIlppcFRlc3QuY2xhc3MiLCBjb21wcmVzcyk7CgoJCWlmKHpPdXQgIT0gbnVs
bCkKCQkgICAgICAgIHpPdXQuY2xvc2UoKTsKCgl9CgoJc3RhdGljIHZvaWQgYWRkRmlsZShaaXBP
dXRwdXRTdHJlYW0gek91dCwgU3RyaW5nIGZpbGUsIGJvb2xlYW4gY29tcHJlc3MpCgkgICAgICAg
IHRocm93cyBFeGNlcHRpb24KCXsKCgkgICAgICAgIElucHV0U3RyZWFtIGluID0gbmV3IEZpbGVJ
bnB1dFN0cmVhbShmaWxlKTsKCSAgICAgICAgWmlwRW50cnkgemUgPSBuZXcgWmlwRW50cnkoZmls
ZSk7CgoJCWlmKCFjb21wcmVzcykgewogICAgICAgICAgICAgICAgICAgICAgICBsb25nIHNpemUg
PSAwOwogICAgICAgICAgICAgICAgICAgICAgICBDUkMzMiBjYWwgPSBuZXcgQ1JDMzIoKTsKCQkJ
aWYoIWluLm1hcmtTdXBwb3J0ZWQoKSkgewoJCQkgICAgICAgIEJ5dGVBcnJheU91dHB1dFN0cmVh
bSBib3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CgoJCQkJYnl0ZVtdIGJ1ZmZlciA9
IG5ldyBieXRlWzggKiAxMDI0XTsKCQkJCWludCBjb3VudCA9IDA7CgkJCQlkbyB7CgkJCQkgICAg
ICAgIHNpemUgKz0gY291bnQ7CgkJCQkJY2FsLnVwZGF0ZShidWZmZXIsIDAsIGNvdW50KTsKCQkJ
CQlib3Mud3JpdGUoYnVmZmVyLCAwLCBjb3VudCk7CgkJCQkJY291bnQgPSBpbi5yZWFkKGJ1ZmZl
ciwgMCwgYnVmZmVyLmxlbmd0aCk7CgkJCQl9CgkJCQl3aGlsZShjb3VudCAhPSAtMSk7CgkJCQlp
biA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShib3MudG9CeXRlQXJyYXkoKSk7CgkJCX0KCQkJ
ZWxzZSB7CgkJCSAgICAgICAgaW4ubWFyayhJbnRlZ2VyLk1BWF9WQUxVRSk7CgkJCQlieXRlW10g
YnVmZmVyID0gbmV3IGJ5dGVbOCAqIDEwMjRdOwoJCQkJaW50IGNvdW50ID0gMDsKCQkJCWRvIHsK
CQkJCSAgICAgICAgc2l6ZSArPSBjb3VudDsKCQkJCQljYWwudXBkYXRlKGJ1ZmZlciwgMCwgY291
bnQpOwoJCQkJCWNvdW50ID0gaW4ucmVhZChidWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGgpOwoJCQkJ
fQoJCQkJd2hpbGUoY291bnQgIT0gLTEpOwoJCQkJaW4ucmVzZXQoKTsKCQkJfQoJCQl6ZS5zZXRT
aXplKHNpemUpOwoJCQl6ZS5zZXRDcmMoY2FsLmdldFZhbHVlKCkpOwoJCX0KCgkJek91dC5wdXRO
ZXh0RW50cnkoemUpOwoKCQlieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbOCAqIDEwMjRdOwoJCWlu
dCBjb3VudCA9IDA7CgkJZG8gewoJCSAgICAgICAgek91dC53cml0ZShidWZmZXIsIDAsIGNvdW50
KTsKCQkJY291bnQgPSBpbi5yZWFkKGJ1ZmZlciwgMCwgYnVmZmVyLmxlbmd0aCk7CgkJfQoJCXdo
aWxlKGNvdW50ICE9IC0xKTsKCX0KfQoK

--------------Boundary-00=_LCNXSHABT0SSOFL3Q23N--